#ifndef __LINUX_USB_FSL_XCVR_H #define __LINUX_USB_FSL_XCVR_H #include #include struct fsl_usb2_platform_data; enum usb_test_mode{ USB_TEST_J = 1, USB_TEST_K = 2, }; /** * @name: transceiver name * @xcvr_type: one of PORTSC_PTS_{UTMI,SERIAL,ULPI} * @init: transceiver- and board-specific initialization function * @uninit: transceiver- and board-specific uninitialization function * @set_host: * @set_device: * @pullup: enable or disable D+ pullup * */ struct fsl_xcvr_ops { char *name; u32 xcvr_type; void (*init)(struct fsl_xcvr_ops *ops); void (*uninit)(struct fsl_xcvr_ops *ops); void (*suspend)(struct fsl_xcvr_ops *ops); void (*set_host)(void); void (*set_device)(void); void (*set_vbus_power)(struct fsl_xcvr_ops *ops, struct fsl_usb2_platform_data *pdata, int on); void (*set_vbus_draw)(struct fsl_xcvr_ops *ops, struct fsl_usb2_platform_data *pdata, unsigned mA); void (*set_remote_wakeup)(u32 *view); void (*pullup)(int on); void(*set_test_mode)(u32 *view, enum usb_test_mode mode); }; struct fsl_xcvr_power { struct platform_device *usb_pdev; struct regulator *regu1; struct regulator *regu2; }; #endif