mtk_musb.h 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #ifndef __MUSB_MTK_MUSB_H__
  2. #define __MUSB_MTK_MUSB_H__
  3. #ifdef CONFIG_OF
  4. extern struct musb *mtk_musb;
  5. #define USBPHY_READ8(offset) readb((void __iomem *)(((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  6. #define USBPHY_WRITE8(offset, value) writeb(value, (void __iomem *)\
  7. (((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  8. #define USBPHY_SET8(offset, mask) USBPHY_WRITE8(offset, (USBPHY_READ8(offset)) | (mask))
  9. #define USBPHY_CLR8(offset, mask) USBPHY_WRITE8(offset, (USBPHY_READ8(offset)) & (~mask))
  10. #define USBPHY_READ16(offset) readw((void __iomem *)(((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  11. #define USBPHY_WRITE16(offset, value) writew(value, (void __iomem *)\
  12. (((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  13. #define USBPHY_SET16(offset, mask) USBPHY_WRITE16(offset, (USBPHY_READ16(offset)) | (mask))
  14. #define USBPHY_CLR16(offset, mask) USBPHY_WRITE16(offset, (USBPHY_READ16(offset)) & (~mask))
  15. #define USBPHY_READ32(offset) readl((void __iomem *)(((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  16. #define USBPHY_WRITE32(offset, value) writel(value, (void __iomem *)\
  17. (((unsigned long)mtk_musb->xceiv->io_priv)+0x800+offset))
  18. #define USBPHY_SET32(offset, mask) USBPHY_WRITE32(offset, (USBPHY_READ32(offset)) | (mask))
  19. #define USBPHY_CLR32(offset, mask) USBPHY_WRITE32(offset, (USBPHY_READ32(offset)) & (~mask))
  20. #ifdef MTK_UART_USB_SWITCH
  21. #define UART2_BASE 0x11003000
  22. #endif
  23. #else
  24. #include <mach/mt_reg_base.h>
  25. #define USBPHY_READ8(offset) readb((void __iomem *)(USB_SIF_BASE+0x800+offset))
  26. #define USBPHY_WRITE8(offset, value) writeb(value, (void __iomem *)(USB_SIF_BASE+0x800+offset))
  27. #define USBPHY_SET8(offset, mask) USBPHY_WRITE8(offset, (USBPHY_READ8(offset)) | (mask))
  28. #define USBPHY_CLR8(offset, mask) USBPHY_WRITE8(offset, (USBPHY_READ8(offset)) & (~mask))
  29. #define USBPHY_READ16(offset) readw((void __iomem *)(USB_SIF_BASE+0x800+offset))
  30. #define USBPHY_WRITE16(offset, value) writew(value, (void __iomem *)(USB_SIF_BASE+0x800+offset))
  31. #define USBPHY_SET16(offset, mask) USBPHY_WRITE16(offset, (USBPHY_READ16(offset)) | (mask))
  32. #define USBPHY_CLR16(offset, mask) USBPHY_WRITE16(offset, (USBPHY_READ16(offset)) & (~mask))
  33. #define USBPHY_READ32(offset) readl((void __iomem *)(USB_SIF_BASE+0x800+offset))
  34. #define USBPHY_WRITE32(offset, value) writel(value, (void __iomem *)(USB_SIF_BASE+0x800+offset))
  35. #define USBPHY_SET32(offset, mask) USBPHY_WRITE32(offset, (USBPHY_READ32(offset)) | (mask))
  36. #define USBPHY_CLR32(offset, mask) USBPHY_WRITE32(offset, (USBPHY_READ32(offset)) & (~mask))
  37. #endif
  38. struct musb;
  39. typedef enum {
  40. USB_SUSPEND = 0,
  41. USB_UNCONFIGURED,
  42. USB_CONFIGURED
  43. } usb_state_enum;
  44. /* USB phy and clock */
  45. extern void usb_phy_poweron(void);
  46. extern void usb_phy_recover(void);
  47. extern void usb_phy_savecurrent(void);
  48. extern void usb_phy_context_restore(void);
  49. extern void usb_phy_context_save(void);
  50. extern bool usb_enable_clock(bool enable);
  51. /* general USB */
  52. extern bool mt_usb_is_device(void);
  53. extern void mt_usb_connect(void);
  54. extern void mt_usb_disconnect(void);
  55. /* ALPS00775710 */
  56. /* extern bool usb_iddig_state(void); */
  57. /* ALPS00775710 */
  58. extern bool usb_cable_connected(void);
  59. extern void pmic_chrdet_int_en(int is_on);
  60. extern void musb_platform_reset(struct musb *musb);
  61. extern void musb_sync_with_bat(struct musb *musb, int usb_state);
  62. extern bool is_saving_mode(void);
  63. /* USB switch charger */
  64. extern bool is_switch_charger(void);
  65. /* host and otg */
  66. extern void mt_usb_otg_init(struct musb *musb);
  67. extern void mt_usb_init_drvvbus(void);
  68. extern void mt_usb_set_vbus(struct musb *musb, int is_on);
  69. extern int mt_usb_get_vbus_status(struct musb *musb);
  70. extern void mt_usb_iddig_int(struct musb *musb);
  71. extern void switch_int_to_device(struct musb *musb);
  72. extern void switch_int_to_host(struct musb *musb);
  73. extern void switch_int_to_host_and_mask(struct musb *musb);
  74. extern void musb_session_restart(struct musb *musb);
  75. #endif