| /* |
| * Copyright (c) 2014, 2017 The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * 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. |
| */ |
| |
| #ifndef __MSM_USB30_H |
| #define __MSM_USB30_H |
| |
| /* |
| * QSCRATCH registers |
| */ |
| #define IPQ_SSUSB_REG_QSCRATCH_REV 0xF8800 |
| #define IPQ_SSUSB_REG_QSCRATCH_CTRL 0xF8804 |
| #define IPQ_SSUSB_REG_QSCRATCH_RAM1 0xF880C |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL 0xF8810 |
| #define IPQ_SSUSB_REG_QSCRATCH_PARAMETER_OVERRIDE_X 0xF8814 |
| #define IPQ_SSUSB_REG_QSCRATCH_CHARGING_DET_CTRL 0xF8818 |
| #define IPQ_SSUSB_REG_QSCRATCH_CHARGING_DET_OUTPUT 0xF881C |
| #define IPQ_SSUSB_REG_QSCRATCH_ALT_INTERRUPT_EN 0xF8820 |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_IRQ_STAT 0xF8824 |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL 0xF8828 |
| #define IPQ_SSUSB_REG_QSCRATCH_DBG_BUS 0xF882C |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1 0xF8834 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_2 0xF8838 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_DATA_IN 0xF883C |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_DATA_OUT 0xF8840 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_CAP_ADDR 0xF8844 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_CAP_DATA 0xF8848 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_READ 0xF884C |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_CR_PROTOCOL_WRITE 0xF8850 |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_STATUS_READ_ONLY 0xF8854 |
| #define IPQ_SSUSB_REG_QSCRATCH_PWR_EVNT_IRQ_STAT 0xF8858 |
| #define IPQ_SSUSB_REG_QSCRATCH_PWR_EVNT_IRQ_MASK 0xF885C |
| #define IPQ_SSUSB_REG_QSCRATCH_HW_SW_EVT_CTRL 0xF8860 |
| #define IPQ_SSUSB_REG_QSCRATCH_VMIDMT_AMEMTYPE_CTRL 0xF8864 |
| #define IPQ_SSUSB_REG_QSCRATCH_QSCRTCH(n) 0xF8868 + ((n) * 0x4) |
| |
| /* |
| * Global config registers |
| */ |
| |
| #define IPQ_SSUSB_REG_GCTL_U2RSTECN (1 << 16) |
| #define IPQ_SSUSB_REG_GCTL_U2EXIT_LFPS (1 << 2) |
| |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL_RAM13_EN (1 << 4) |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL_RAM1112_EN (1 << 3) |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL_BAM_NDP_EN (1 << 2) |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL_DBM_FSM_EN (1 << 1) |
| #define IPQ_SSUSB_REG_QSCRATCH_CGCTL_DBM_REG_EN (1 << 0) |
| |
| #define IPQ_SSUSB_REG_QSCRATCH_RAM1_RAM13_EN (1 << 2) |
| #define IPQ_SSUSB_REG_QSCRATCH_RAM1RAM12_EN (1 << 1) |
| #define IPQ_SSUSB_REG_QSCRATCH_RAM1_RAM11_EN (1 << 0) |
| |
| #define IPQ_GPIO_IN_OUTn(n) (MSM_TLMM_BASE + \ |
| 0x00001004 + 0x10 * (n)) |
| #define IPQ_GPIO_IN_OUTn_GPIO_OUT_SHFT 1 |
| |
| /* |
| * USB Reset control register |
| */ |
| #define IPQ_USB30_RESET_PORT2_HS_PHY_ASYNC_RESET (1 << 5) |
| #define IPQ_USB30_RESET_MASTER_ASYNC_RESET (1 << 4) |
| #define IPQ_USB30_RESET_SLEEP_ASYNC_RESET (1 << 3) |
| #define IPQ_USB30_RESET_MOC_UTMI_ASYNC_RESET (1 << 2) |
| #define IPQ_USB30_RESET_POWERON_ASYNC_RESET (1 << 1) |
| #define IPQ_USB30_RESET_PHY_ASYNC_RESET (1 << 0) |
| #define IPQ_USB30_RESET_MASK 0x3F |
| |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL_COMMONONN (1 << 11) |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL_USE_CLKCORE (1 << 18) |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL_FSEL_VAL 0x70 |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL_AUTORESUME (1 << 19) |
| #define IPQ_SSUSB_REG_QSCRATCH_HS_PHY_CTRL_UTMI_OTG_VBUS_VALID (1 << 20) |
| |
| #define IPQ_QSCRATCH_REG_OFFSET (0x000F8800) |
| #define IPQ_QSCRATCH_GENERAL_CFG (IPQ_QSCRATCH_REG_OFFSET + 0x08) |
| #define IPQ_CHARGING_DET_CTRL_REG (IPQ_QSCRATCH_REG_OFFSET + 0x18) |
| #define IPQ_CHARGING_DET_OUTPUT_REG (IPQ_QSCRATCH_REG_OFFSET + 0x1C) |
| #define IPQ_ALT_INTERRUPT_EN_REG (IPQ_QSCRATCH_REG_OFFSET + 0x20) |
| #define IPQ_HS_PHY_IRQ_STAT_REG (IPQ_QSCRATCH_REG_OFFSET + 0x24) |
| #define IPQ_SS_PHY_CTRL_REG (IPQ_QSCRATCH_REG_OFFSET + 0x30) |
| #define IPQ_SS_PHY_PARAM_CTRL_1_REG (IPQ_QSCRATCH_REG_OFFSET + 0x34) |
| |
| /* |
| * PHY control Registers |
| */ |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_REF_USE_PAD (1 << 28) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_TEST_BURNIN (1 << 27) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_TEST_POWERDOWN (1 << 26) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_RTUNE_REQ (1 << 25) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_LANE0_PWR_PRESENT (1 << 24) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_USB2_REF_CLK_EN (1 << 23) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_USB2_REF_CLK_SEL (1 << 22) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_SSC_REF_CLK_SEL(n) ((n) << 13) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_SSC_RANGE(n) ((n) << 10) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_REF_USB2_EN (1 << 9) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_REF_SS_PHY_EN (1 << 8) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_SS_PHY_RESET (1 << 7) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_MPLL_MULTI(n) ((n) << 0) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_SS_PHY_RESET (1 << 7) |
| #define IPQ_SSUSB_QSCRATCH_SS_PHY_CTRL_SS_PHY_RESET (1 << 7) |
| |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_LANE0_TX_TERM_OFFSET(n) ((n) << 27) |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_TX_SWING_FULL(n) ((n) << 20) |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_TX_DEEMPH_6DB(n) ((n) << 14) |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_TX_DEEMPH_3_5DB(n) ((n) << 8) |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_LOS_LEVEL(n) ((n) << 3) |
| #define IPQ_SSUSB_REG_QSCRATCH_SS_PHY_PARAM_CTRL_1_LOS_BIAS(n) ((n) << 0) |
| #define IPQ_SSUSB_REG_QSCRATCH_GENERAL_CFG_XHCI_REV(n) ((n) << 2) |
| #define IPQ_SSUSB_REG_QSCRATCH_GENERAL_CFG_DBM_EN (1 << 1) |
| |
| #define IPQ_TCSR_USB_CONTROLLER_TYPE_SEL 0x1A4000B0 |
| #define IPQ806X_USB_CONT_TYPE 0x3 |
| #define IPQ806X_USB_REG_MAP_SIZE 0x4 |
| |
| #define USB30_MODE_DEVICE 0 |
| #define USB30_MODE_HOST 1 |
| |
| struct dwc3_platform_data { |
| u8 usb_mode; |
| u8 pwr_en; |
| u8 pwr_en_gpio1; |
| u8 pwr_en_gpio2; |
| }; |
| #endif /*__MSM_USB30_H */ |