blob: 3db7e472152d4b17c1e855a4b72cef0f8332b8a3 [file] [log] [blame] [edit]
/*
* Copyright 2017, Data61
* Commonwealth Scientific and Industrial Research Organisation (CSIRO)
* ABN 41 687 119 230.
*
* This software may be distributed and modified according to the terms of
* the BSD 2-Clause license. Note that NO WARRANTY is provided.
* See "LICENSE_BSD2.txt" for details.
*
* @TAG(DATA61_BSD)
*/
/*
* These functions need to be implemented by platform
* specific code.
*/
#ifndef _PLAT_USBOTG_H_
#define _PLAT_USBOTG_H_
#include <usb/otg.h>
struct usb_otg_dev;
typedef struct usb_otg_dev* usb_otg_t;
struct usb_otg_dev {
int id;
ps_dma_man_t* dman;
/* Operations */
int (*ep0_setup)(usb_otg_t otg,
otg_setup_cb cb, void* token);
int (*prime)(usb_otg_t otg, int ep, enum usb_xact_type dir,
void* vbuf, uintptr_t pbuf, int len,
otg_prime_cb cb, void* token);
/* Platform private data */
struct usb_otg_data* pdata;
};
/**
* Initialise USB OTG controller
* @param[in/out] odev An OTG structure to populate. This must
* already be filled with a DMA allocator.
* and the device ID.
* @param[in] ioops a list of io operation functions.
* of the initialised host controller
* @return 0 on success
*/
int usb_plat_otg_init(usb_otg_t odev, ps_io_ops_t* ioops);
/** TODO this is actually called from platform code and should
* not be public.
* Initialise a ehci OTG controller
* @param[in/out] odev A OTG controller structure to
* populate. Must be pre-filled with a
* DMA allocator. This function will
* fill the private data and function
* pointers of this structure.
* @param[int] cap_regs memory location of the mapped ECHI
* capability registers
* @return 0 on success
*/
int ehci_otg_init(usb_otg_t odev, uintptr_t cap_regs);
/**
* Returns the number of OTG controllers on the platform
* @return the number of OTG controllers on the platform
*/
int usb_plat_notgs(void);
/**
* Returns the default OTG ID for the running platform
* @return the default OTG ID for the running platform
*/
int usb_plat_default_otg(void);
void otg_plat_handle_irq(usb_otg_t otg);
#endif /* _PLAT_USBOTG_H_ */