summaryrefslogtreecommitdiff
path: root/drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h')
-rw-r--r--drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h646
1 files changed, 0 insertions, 646 deletions
diff --git a/drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h b/drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h
deleted file mode 100644
index 05d344969776..000000000000
--- a/drivers/staging/westbridge/astoria/include/linux/westbridge/cyasmtp.h
+++ /dev/null
@@ -1,646 +0,0 @@
-/* Cypress West Bridge API header file (cyasmtp.h)
-## ===========================
-## Copyright (C) 2010 Cypress Semiconductor
-##
-## This program is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public License
-## as published by the Free Software Foundation; either version 2
-## of the License, or (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street
-## Fifth Floor, Boston, MA 02110-1301, USA.
-## ===========================
-*/
-
-#ifndef _INCLUDED_CYASMTP_H_
-#define _INCLUDED_CYASMTP_H_
-
-#include "cyasmisc.h"
-
-#include "cyas_cplus_start.h"
-
-/*@@Media Transfer Protocol (MTP) Overview
- Summary
- The MTP API has been designed to allow MTP enabled West Bridge
- devices to implement the MTP protocol while maintaining high
- performance. West Bridge has the capability to enter into a
- Turbo mode during a MTP SendObject or GetObject operation
- enabling it to directly stream the data into or out of the
- attached SD card with minimal involvement from the Processor.
-
- Description
- The MTP API is designed to act as a pass through implementation
- of the MTP protocol for all operations. Each MTP transaction
- received from the Host is passed through West Bridge and along
- to the Processor. The Processor can then respond to the
- transaction and pass data and/or responses back to the Host
- through West Bridge.
-
- The MTP API also allows for a high speed handling of MTP
- SendObject and GetObject operations, referred to as Turbo MTP.
- During a Turbo MTP operation West Bridge is responsible for
- reading or writing the data for the MTP operation directly from
- or to the SD card with minimal interaction from the Processor.
- The is done by having the Processor transfer a Block Table
- to West Bridge which contains the locations on the SD card that
- need to be read or written. During the handling of a Turbo
- Operation the Processor will then only periodically need to
- send a new Block Table to West Bridge when the first is used up.
- See the CyAsMTPInitSendObject and CyAsMTPInitGetObject functions
- for more details.
-
- In order to enable the MTP API you must first have a MTP enabled
- West Bridge loaded with MTP firmware. You then must start the USB
- and Storage APIs before starting the MTP API. See CyAsMTPStart
- for more details.
-*/
-
-/*@@Endpoints
- Summary
- When using MTP firmware endpoints 2 and 6 are dedicated
- to bulk MTP traffic and endpoint 1 is available for MTP
- events.
-
- Description
- When using a MTP enabled West Brdige device endpoints 2 and
- 6 are made available for use to implement the MTP protocol.
- These endpoints have a few special restrictions noted below
- but otherwise the existing USB APIs can be used normally with
- these endpoints.
-
- 1. CyAsUsbSetNak, CyAsUsbClearNak, and CyAsUsbGetNak are
- disabled for these endpoints
- 2. During a turbo operation CyAsUsbSetStall, CyAsUsbClearStall,
- and CyAsUsbGetStall are disabled.
-
-*/
-
-
-/* Summary
- This constants defines the maximum number of
- entries in the Block Table used to describe
- the locations for Send/GetObject operations.
-
- See Also
- * CyAsMtpSendObject
- * CyAsMtpGetObject
-*/
-#define CY_AS_MAX_BLOCK_TABLE_ENTRIES 64
-
-/* Summary
- Endpoint to be used for MTP reads from the USB host.
- */
-#define CY_AS_MTP_READ_ENDPOINT (2)
-
-/* Summary
- Endpoint to be used fro MTP writes to the USB host.
- */
-#define CY_AS_MTP_WRITE_ENDPOINT (6)
-
-/******************************************
- * MTP Types
- ******************************************/
-
-/* Summary
- The BlockTable used for turbo operations.
-
- Description
- This struct is used to specify the blocks
- to be used for both read/write and send/getObject
- operations.
-
- The start block is a starting Logical Block Address
- and num block is the number of blocks in that contiguous
- region.
-
- start_blocks[i]->[-------] <- start_blocks[i] + num_blocks[i]
-
- If you need fewer than CY_AS_MAX_BLOCK_TABLE_ENTRIES
- the remainder should be left empty. Empty is defined
- as num_blocks equal to 0.
-
- See Also
- * CyAsMTPInitSendObject
- * CyAsMTPInitGetObject
-
-*/
-typedef struct cy_as_mtp_block_table {
- uint32_t start_blocks[CY_AS_MAX_BLOCK_TABLE_ENTRIES];
- uint16_t num_blocks[CY_AS_MAX_BLOCK_TABLE_ENTRIES];
-} cy_as_mtp_block_table;
-
-/* Summary
- This type specifies the type of MTP event that has occurred.
-
- Description
- MTP events are used to communicate that West Bridge has
- either finished the handling of the given operation, or
- that it requires additional data to complete the operation.
-
- In no case does West Bridge send any MTP protocol responses,
- this always remain the responsibility of the client.
-
- See Also
- * CyAsMTPInitSendObject
- * CyAsMTPInitGetObject
- * CyAsMTPSendBlockTable
-
-*/
-typedef enum cy_as_mtp_event {
- /* This event is sent when West Bridge
- has finished writing the data from a
- send_object. west bridge will -not- send
- the MTP response. */
- cy_as_mtp_send_object_complete,
-
- /* This event is sent when West Bridge
- has finished sending the data for a
- get_object operation. west bridge will
- -not- send the MTP response. */
- cy_as_mtp_get_object_complete,
-
- /* This event is called when West Bridge
- needs a new block_table. this is only a
- notification, to transfer a block_table
- to west bridge the cy_as_mtp_send_block_table
- use the function. while west bridge is waiting
- for a block_table during a send_object it
- may need to NAK the endpoint. it is important
- that the cy_as_mtp_send_block_table call is made
- in a timely manner as eventually a delay
- will result in an USB reset. this event has
- no data */
- cy_as_mtp_block_table_needed
-} cy_as_mtp_event;
-
-/* Summary
- Data for the CyAsMTPSendObjectComplete event.
-
- Description
- Notification that a SendObject operation has been
- completed. The status of the operation is given
- (to distinguish between a cancelled and a success
- for example) as well as the block count. The blocks
- are used in order based on the current block table.
- If more than one block table was used for a given
- SendObject the count will include the total number
- of blocks written.
-
- This callback will be made only once per SendObject
- operation and it will only be called after all of
- the data has been committed to the SD card.
-
- See Also
- * CyAsMTPEvent
-
- */
-typedef struct cy_as_mtp_send_object_complete_data {
- cy_as_return_status_t status;
- uint32_t byte_count;
- uint32_t transaction_id;
-} cy_as_mtp_send_object_complete_data;
-
-/* Summary
- Data for the CyAsMTPGetObjectComplete event.
-
- Description
- Notification that a GetObject has finished. This
- event allows the P side to know when to send the MTP
- response for the GetObject operation.
-
- See Also
- * CyAsMTPEvent
-
-*/
-typedef struct cy_as_mtp_get_object_complete_data {
- cy_as_return_status_t status;
- uint32_t byte_count;
-} cy_as_mtp_get_object_complete_data;
-
-/* Summary
- MTP Event callback.
-
- Description
- Callback used to communicate that a SendObject
- operation has finished.
-
- See Also
- * CyAsMTPEvent
-*/
-typedef void (*cy_as_mtp_event_callback)(
- cy_as_device_handle handle,
- cy_as_mtp_event evtype,
- void *evdata
- );
-
-/* Summary
- This is the callback function called after asynchronous API
- functions have completed.
-
- Description
- When calling API functions from callback routines (interrupt
- handlers usually) the async version of these functions must
- be used. This callback is called when an asynchronous API
- function has completed.
-*/
-typedef void (*cy_as_mtp_function_callback)(
- /* Handle to the device to configure */
- cy_as_device_handle handle,
- /* The error status of the operation */
- cy_as_return_status_t status,
- /* A client supplied 32 bit tag */
- uint32_t client
-);
-
-/**************************************
- * MTP Functions
- **************************************/
-
-/* Summary
- This function starts the MTP stack.
-
- Description
- Initializes West Bridge for MTP activity and registers the MTP
- event callback.
-
- Before calling CyAsMTPStart, CyAsUsbStart and CyAsStorageStart must be
- called (in either order).
-
- MTPStart must be called before the device is enumerated. Please
- see the documentation for CyAsUsbSetEnumConfig and CyAsUsbEnumControl
- for details on enumerating a device for MTP.
-
- Calling MTPStart will not affect any ongoing P<->S traffic.
-
- This requires a MTP firmware image to be loaded on West Bridge.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_CONFIGURED
- * CY_AS_ERROR_NO_FIRMWARE
- * CY_AS_ERROR_IN_SUSPEND
- * CY_AS_ERROR_INVALID_IN_CALLBACK
- * CY_AS_ERROR_STARTSTOP_PENDING
- * CY_AS_ERROR_NOT_RUNNING - CyAsUsbStart or CyAsStorageStart
- * have not been called
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_INVALID_RESPONSE
-
-
- See Also
- * CyAsMTPStop
- * CyAsUsbStart
- * CyAsStorageStart
- * CyAsUsbSetEnumConfig
- * CyAsUsbEnumControl
-*/
-cy_as_return_status_t
-cy_as_mtp_start(
- cy_as_device_handle handle,
- cy_as_mtp_event_callback event_c_b,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-
-/* Summary
- This function stops the MTP stack.
-
- Description
- Stops all MTP activity. Any ongoing transfers are
- canceled.
-
- This will not cause a UsbDisconnect but all
- MTP activity (both pass through and turbo) will
- stop.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_CONFIGURED
- * CY_AS_ERROR_NO_FIRMWARE
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_IN_SUSPEND
- * CY_AS_ERROR_INVALID_IN_CALLBACK
- * CY_AS_ERROR_STARTSTOP_PENDING
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_INVALID_RESPONSE
-
-
- See Also
- * CyAsMTPStart
-*/
-cy_as_return_status_t
-cy_as_mtp_stop(
- cy_as_device_handle handle,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function sets up a Turbo SendObject operation.
-
- Description
- Calling this function will setup West Bridge to
- enable Tubo handling of the next SendObject
- operation received. This will pass down the initial
- block table to the firmware and setup a direct u->s
- write for the SendObject operation.
-
- If this function is not called before a SendObject
- operation is seen the SendObject operation and data
- will be passed along to the P port like any other MTP
- command. It would then be the responsibility of the
- client to perform a normal StorageWrite call to
- store the data on the SD card. N.B. This will be
- very slow compared with the Turbo handling.
-
- The completion of this function only signals that
- West Bridge has been set up to receive the next SendObject
- operation. When the SendObject operation has been fully
- handled and the data written to the SD card a separate
- event will be triggered.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_CONFIGURED
- * CY_AS_ERROR_NO_FIRMWARE
- * CY_AS_ERROR_IN_SUSPEND
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_ASYNC_PENDING
- * CY_AS_ERROR_INVALID_RESPONSE
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
-
- See Also
- * CyAsMTPCancelSendObject
- * CyAsMTPInitGetObject
- * CyAsMTPEvent
- * CyAsMTPSendBlockTable
-*/
-cy_as_return_status_t
-cy_as_mtp_init_send_object(
- cy_as_device_handle handle,
- cy_as_mtp_block_table *blk_table,
- uint32_t num_bytes,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function cancels an ongoing MTP operation.
-
- Description
- Causes West Bridge to cancel an ongoing SendObject
- operation. Note this is only a cancel to West Bridge,
- the MTP operation still needs to be canceled by
- sending a response.
-
- West Bridge will automatically set a Stall on the endpoint
- when the cancel is received.
-
- This function is only valid after CyAsMTPInitSendObject
- has been called, but before the CyAsMTPSendObjectComplete
- event has been sent.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_INVALID_RESPONSE
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
- * CY_AS_ERROR_NO_OPERATION_PENDING
-
- See Also
- * CyAsMTPInitSendObject
-*/
-cy_as_return_status_t
-cy_as_mtp_cancel_send_object(
- cy_as_device_handle handle,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function sets up a turbo GetObject operation.
-
- Description
- Called by the P in response to a GetObject
- operation. This provides West Bridge with the block
- addresses for the Object data that needs to be
- transferred.
-
- It is the responsibility of the Processor to send the MTP
- operation before calling CyAsMTPInitGetObject. West Bridge
- will then send the data phase of the transaction,
- automatically creating the required container for Data.
- Once all of the Data has been transferred a callback will
- be issued to inform the Processor that the Data phase has
- completed allowing it to send the required MTP response.
-
- If an entire Block Table is used then after the
- last block is transferred the CyAsMTPBtCallback
- will be called to allow an additional Block Table(s)
- to be specified.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_CONFIGURED
- * CY_AS_ERROR_NO_FIRMWARE
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_IN_SUSPEND
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_ASYNC_PENDING
- * CY_AS_ERROR_INVALID_RESPONSE
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
-
- See Also
- * CyAsMTPInitSendObject
- * CyAsMTPCancelGetObject
- * CyAsMTPEvent
- * CyAsMTPSendBlockTable
-*/
-cy_as_return_status_t
-cy_as_mtp_init_get_object(
- cy_as_device_handle handle,
- cy_as_mtp_block_table *table_p,
- uint32_t num_bytes,
- uint32_t transaction_id,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function cancels an ongoing turbo GetObject
- operation.
-
- Description
- Causes West Bridge to cancel an ongoing GetObject
- operation. Note this is only a cancel to West Bridge,
- the MTP operation still needs to be canceled by
- sending a response.
-
- This function is only valid after CyAsMTPGetSendObject
- has been called, but before the CyAsMTPGetObjectComplete
- event has been sent.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_INVALID_RESPONSE
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
- * CY_AS_ERROR_NO_OPERATION_PENDING
-
- See Also
- * CyAsMTPInitGetObject
-*/
-cy_as_return_status_t
-cy_as_mtp_cancel_get_object(
- cy_as_device_handle handle,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function is used to transfer a BlockTable as part of
- an ongoing MTP operation.
-
- Description
- This function is called in response to the
- CyAsMTPBlockTableNeeded event. This allows the client to
- pass in a BlockTable structure to West Bridge.
-
- The memory associated with the table will be copied and
- can be safely disposed of when the function returns if
- called synchronously, or when the callback is made if
- called asynchronously.
-
- This function is used for both SendObject and GetObject
- as both can generate the CyAsMTPBlockTableNeeded event.
-
- Returns
- * CY_AS_ERROR_SUCCESS
- * CY_AS_ERROR_INVALID_HANDLE
- * CY_AS_ERROR_NOT_CONFIGURED
- * CY_AS_ERROR_NO_FIRMWARE
- * CY_AS_ERROR_NOT_RUNNING
- * CY_AS_ERROR_IN_SUSPEND
- * CY_AS_ERROR_OUT_OF_MEMORY
- * CY_AS_ERROR_ASYNC_PENDING
- * CY_AS_ERROR_INVALID_RESPONSE
- * CY_AS_ERROR_NOT_SUPPORTED - West Bridge is not running
- * firmware with MTP support
-
- See Also
- * CyAsMTPInitSendObject
- * CyAsMTPInitGetObject
-*/
-cy_as_return_status_t
-cy_as_mtp_send_block_table(
- cy_as_device_handle handle,
- cy_as_mtp_block_table *table,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-/* Summary
- This function is used to mark the start of a storage
- read/write burst from the P port processor.
-
- Description
- This function is used to mark the start of a storage
- read/write burst from the processor. All USB host access
- into the mass storage / MTP endpoints will be blocked
- while the read/write burst is ongoing, and will be allowed
- to resume only after CyAsMTPStorageOnlyStop is called.
- The burst mode is used to reduce the firmware overhead
- due to configuring the internal data paths repeatedly,
- and can help improve performance when a sequence of
- read/writes is performed in a burst.
-
- This function will not generate a special mailbox request,
- it will only set a flag on the next Storage Read/Write
- operation. Until such a call is made West Bridge will
- continue to accept incoming packets from the Host.
-
- * Valid in Asynchronous Callback: YES
-
- Returns
- * CY_AS_ERROR_INVALID_HANDLE - Invalid West Bridge device
- * handle was passed in.
- * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not
- * been configured.
- * CY_AS_ERROR_NO_FIRMWARE - Firmware is not active on West
- * Bridge device.
- * CY_AS_ERROR_NOT_RUNNING - Storage stack is not running.
- * CY_AS_ERROR_SUCCESS - Burst mode has been started.
-
- See Also
- * CyAsStorageReadWriteBurstStop
- */
-cy_as_return_status_t
-cy_as_mtp_storage_only_start(
- /* Handle to the West Bridge device. */
- cy_as_device_handle handle
- );
-
-/* Summary
- This function is used to mark the end of a storage read/write
- burst from the P port processor.
-
- Description
- This function is used to mark the end of a storage read/write
- burst from the processor. At this point, USB access to the
- mass storage / MTP endpoints on the West Bridge device will be
- re-enabled.
-
- * Valid in Asynchronous Callback: NO
-
- Returns
- * CY_AS_ERROR_INVALID_HANDLE - Invalid West Bridge device handle
- * was passed in.
- * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been
- * configured.
- * CY_AS_ERROR_NO_FIRMWARE - Firmware is not active on West Bridge
- * device.
- * CY_AS_ERROR_NOT_RUNNING - Storage stack is not running.
- * CY_AS_ERROR_INVALID_IN_CALLBACK - This API cannot be called
- * from a callback.
- * CY_AS_ERROR_OUT_OF_MEMORY - Failed to allocate memory to
- * process the request.
- * CY_AS_ERROR_TIMEOUT - Failed to send request to firmware.
- * CY_AS_ERROR_SUCCESS - Burst mode has been stopped.
-
- See Also
- * CyAsStorageReadWriteBurstStart
- */
-cy_as_return_status_t
-cy_as_mtp_storage_only_stop(
- /* Handle to the West Bridge device. */
- cy_as_device_handle handle,
- cy_as_function_callback cb,
- uint32_t client
- );
-
-#include "cyas_cplus_end.h"
-
-#endif