17ae18f37SLucas Stach /* 27ae18f37SLucas Stach * Copyright (c) 2011 The Chromium OS Authors. 3*7e44d932SJim Lin * Copyright (c) 2013 NVIDIA Corporation 47ae18f37SLucas Stach * See file CREDITS for list of people who contributed to this 57ae18f37SLucas Stach * project. 67ae18f37SLucas Stach * 77ae18f37SLucas Stach * This program is free software; you can redistribute it and/or 87ae18f37SLucas Stach * modify it under the terms of the GNU General Public License as 97ae18f37SLucas Stach * published by the Free Software Foundation; either version 2 of 107ae18f37SLucas Stach * the License, or (at your option) any later version. 117ae18f37SLucas Stach * 127ae18f37SLucas Stach * This program is distributed in the hope that it will be useful, 137ae18f37SLucas Stach * but WITHOUT ANY WARRANTY; without even the implied warranty of 147ae18f37SLucas Stach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 157ae18f37SLucas Stach * GNU General Public License for more details. 167ae18f37SLucas Stach * 177ae18f37SLucas Stach * You should have received a copy of the GNU General Public License 187ae18f37SLucas Stach * along with this program; if not, write to the Free Software 197ae18f37SLucas Stach * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 207ae18f37SLucas Stach * MA 02111-1307 USA 217ae18f37SLucas Stach */ 227ae18f37SLucas Stach 237ae18f37SLucas Stach #ifndef _TEGRA_USB_H_ 247ae18f37SLucas Stach #define _TEGRA_USB_H_ 257ae18f37SLucas Stach 267ae18f37SLucas Stach /* USB1_LEGACY_CTRL */ 277ae18f37SLucas Stach #define USB1_NO_LEGACY_MODE 1 287ae18f37SLucas Stach 297ae18f37SLucas Stach #define VBUS_SENSE_CTL_SHIFT 1 307ae18f37SLucas Stach #define VBUS_SENSE_CTL_MASK (3 << VBUS_SENSE_CTL_SHIFT) 317ae18f37SLucas Stach #define VBUS_SENSE_CTL_VBUS_WAKEUP 0 327ae18f37SLucas Stach #define VBUS_SENSE_CTL_AB_SESS_VLD_OR_VBUS_WAKEUP 1 337ae18f37SLucas Stach #define VBUS_SENSE_CTL_AB_SESS_VLD 2 347ae18f37SLucas Stach #define VBUS_SENSE_CTL_A_SESS_VLD 3 357ae18f37SLucas Stach 367ae18f37SLucas Stach /* USBx_IF_USB_SUSP_CTRL_0 */ 377ae18f37SLucas Stach #define UTMIP_PHY_ENB (1 << 12) 387ae18f37SLucas Stach #define UTMIP_RESET (1 << 11) 397ae18f37SLucas Stach #define USB_PHY_CLK_VALID (1 << 7) 407ae18f37SLucas Stach #define USB_SUSP_CLR (1 << 5) 417ae18f37SLucas Stach 42*7e44d932SJim Lin /* USB2_IF_USB_SUSP_CTRL_0 */ 43*7e44d932SJim Lin #define ULPI_PHY_ENB (1 << 13) 44*7e44d932SJim Lin 45*7e44d932SJim Lin /* USBx_UTMIP_MISC_CFG0 */ 46*7e44d932SJim Lin #define UTMIP_SUSPEND_EXIT_ON_EDGE (1 << 22) 47*7e44d932SJim Lin 487ae18f37SLucas Stach /* USBx_UTMIP_MISC_CFG1 */ 497ae18f37SLucas Stach #define UTMIP_PLLU_STABLE_COUNT_SHIFT 6 507ae18f37SLucas Stach #define UTMIP_PLLU_STABLE_COUNT_MASK \ 517ae18f37SLucas Stach (0xfff << UTMIP_PLLU_STABLE_COUNT_SHIFT) 527ae18f37SLucas Stach #define UTMIP_PLL_ACTIVE_DLY_COUNT_SHIFT 18 537ae18f37SLucas Stach #define UTMIP_PLL_ACTIVE_DLY_COUNT_MASK \ 547ae18f37SLucas Stach (0x1f << UTMIP_PLL_ACTIVE_DLY_COUNT_SHIFT) 557ae18f37SLucas Stach #define UTMIP_PHY_XTAL_CLOCKEN (1 << 30) 567ae18f37SLucas Stach 577ae18f37SLucas Stach /* USBx_UTMIP_PLL_CFG1_0 */ 587ae18f37SLucas Stach #define UTMIP_PLLU_ENABLE_DLY_COUNT_SHIFT 27 597ae18f37SLucas Stach #define UTMIP_PLLU_ENABLE_DLY_COUNT_MASK \ 60*7e44d932SJim Lin (0x1f << UTMIP_PLLU_ENABLE_DLY_COUNT_SHIFT) 617ae18f37SLucas Stach #define UTMIP_XTAL_FREQ_COUNT_SHIFT 0 627ae18f37SLucas Stach #define UTMIP_XTAL_FREQ_COUNT_MASK 0xfff 637ae18f37SLucas Stach 64*7e44d932SJim Lin /* USBx_UTMIP_BIAS_CFG0_0 */ 65*7e44d932SJim Lin #define UTMIP_HSDISCON_LEVEL_MSB (1 << 24) 66*7e44d932SJim Lin #define UTMIP_OTGPD (1 << 11) 67*7e44d932SJim Lin #define UTMIP_BIASPD (1 << 10) 68*7e44d932SJim Lin #define UTMIP_HSDISCON_LEVEL_SHIFT 2 69*7e44d932SJim Lin #define UTMIP_HSDISCON_LEVEL_MASK \ 70*7e44d932SJim Lin (0x3 << UTMIP_HSDISCON_LEVEL_SHIFT) 71*7e44d932SJim Lin #define UTMIP_HSSQUELCH_LEVEL_SHIFT 0 72*7e44d932SJim Lin #define UTMIP_HSSQUELCH_LEVEL_MASK \ 73*7e44d932SJim Lin (0x3 << UTMIP_HSSQUELCH_LEVEL_SHIFT) 74*7e44d932SJim Lin 757ae18f37SLucas Stach /* USBx_UTMIP_BIAS_CFG1_0 */ 76*7e44d932SJim Lin #define UTMIP_FORCE_PDTRK_POWERDOWN 1 777ae18f37SLucas Stach #define UTMIP_BIAS_PDTRK_COUNT_SHIFT 3 787ae18f37SLucas Stach #define UTMIP_BIAS_PDTRK_COUNT_MASK \ 797ae18f37SLucas Stach (0x1f << UTMIP_BIAS_PDTRK_COUNT_SHIFT) 807ae18f37SLucas Stach 81*7e44d932SJim Lin /* USBx_UTMIP_DEBOUNCE_CFG0_0 */ 827ae18f37SLucas Stach #define UTMIP_DEBOUNCE_CFG0_SHIFT 0 837ae18f37SLucas Stach #define UTMIP_DEBOUNCE_CFG0_MASK 0xffff 847ae18f37SLucas Stach 857ae18f37SLucas Stach /* USBx_UTMIP_TX_CFG0_0 */ 867ae18f37SLucas Stach #define UTMIP_FS_PREAMBLE_J (1 << 19) 877ae18f37SLucas Stach 887ae18f37SLucas Stach /* USBx_UTMIP_BAT_CHRG_CFG0_0 */ 897ae18f37SLucas Stach #define UTMIP_PD_CHRG 1 907ae18f37SLucas Stach 917ae18f37SLucas Stach /* USBx_UTMIP_SPARE_CFG0_0 */ 927ae18f37SLucas Stach #define FUSE_SETUP_SEL (1 << 3) 937ae18f37SLucas Stach 947ae18f37SLucas Stach /* USBx_UTMIP_HSRX_CFG0_0 */ 957ae18f37SLucas Stach #define UTMIP_IDLE_WAIT_SHIFT 15 967ae18f37SLucas Stach #define UTMIP_IDLE_WAIT_MASK (0x1f << UTMIP_IDLE_WAIT_SHIFT) 977ae18f37SLucas Stach #define UTMIP_ELASTIC_LIMIT_SHIFT 10 987ae18f37SLucas Stach #define UTMIP_ELASTIC_LIMIT_MASK \ 997ae18f37SLucas Stach (0x1f << UTMIP_ELASTIC_LIMIT_SHIFT) 1007ae18f37SLucas Stach 101*7e44d932SJim Lin /* USBx_UTMIP_HSRX_CFG1_0 */ 1027ae18f37SLucas Stach #define UTMIP_HS_SYNC_START_DLY_SHIFT 1 1037ae18f37SLucas Stach #define UTMIP_HS_SYNC_START_DLY_MASK \ 104*7e44d932SJim Lin (0x1f << UTMIP_HS_SYNC_START_DLY_SHIFT) 1057ae18f37SLucas Stach 1067ae18f37SLucas Stach /* USBx_CONTROLLER_2_USB2D_ICUSB_CTRL_0 */ 1077ae18f37SLucas Stach #define IC_ENB1 (1 << 3) 1087ae18f37SLucas Stach 109*7e44d932SJim Lin /* PORTSC1, USB1, defined for Tegra20 */ 110*7e44d932SJim Lin #define PTS1_SHIFT 31 111*7e44d932SJim Lin #define PTS1_MASK (1 << PTS1_SHIFT) 112*7e44d932SJim Lin #define STS1 (1 << 30) 113*7e44d932SJim Lin 1147ae18f37SLucas Stach #define PTS_UTMI 0 1157ae18f37SLucas Stach #define PTS_RESERVED 1 1167ae18f37SLucas Stach #define PTS_ULPI 2 1177ae18f37SLucas Stach #define PTS_ICUSB_SER 3 118*7e44d932SJim Lin #define PTS_HSIC 4 1197ae18f37SLucas Stach 120*7e44d932SJim Lin /* SB2_CONTROLLER_2_USB2D_PORTSC1_0 */ 1217ae18f37SLucas Stach #define WKOC (1 << 22) 1227ae18f37SLucas Stach #define WKDS (1 << 21) 1237ae18f37SLucas Stach #define WKCN (1 << 20) 1247ae18f37SLucas Stach 1257ae18f37SLucas Stach /* USBx_UTMIP_XCVR_CFG0_0 */ 1267ae18f37SLucas Stach #define UTMIP_FORCE_PD_POWERDOWN (1 << 14) 1277ae18f37SLucas Stach #define UTMIP_FORCE_PD2_POWERDOWN (1 << 16) 1287ae18f37SLucas Stach #define UTMIP_FORCE_PDZI_POWERDOWN (1 << 18) 129*7e44d932SJim Lin #define UTMIP_XCVR_LSBIAS_SE (1 << 21) 130*7e44d932SJim Lin #define UTMIP_XCVR_HSSLEW_MSB_SHIFT 25 131*7e44d932SJim Lin #define UTMIP_XCVR_HSSLEW_MSB_MASK \ 132*7e44d932SJim Lin (0x7f << UTMIP_XCVR_HSSLEW_MSB_SHIFT) 133*7e44d932SJim Lin #define UTMIP_XCVR_SETUP_MSB_SHIFT 22 134*7e44d932SJim Lin #define UTMIP_XCVR_SETUP_MSB_MASK (0x7 << UTMIP_XCVR_SETUP_MSB_SHIFT) 135*7e44d932SJim Lin #define UTMIP_XCVR_SETUP_SHIFT 0 136*7e44d932SJim Lin #define UTMIP_XCVR_SETUP_MASK (0xf << UTMIP_XCVR_SETUP_SHIFT) 1377ae18f37SLucas Stach 1387ae18f37SLucas Stach /* USBx_UTMIP_XCVR_CFG1_0 */ 139*7e44d932SJim Lin #define UTMIP_XCVR_TERM_RANGE_ADJ_SHIFT 18 140*7e44d932SJim Lin #define UTMIP_XCVR_TERM_RANGE_ADJ_MASK \ 141*7e44d932SJim Lin (0xf << UTMIP_XCVR_TERM_RANGE_ADJ_SHIFT) 1427ae18f37SLucas Stach #define UTMIP_FORCE_PDDISC_POWERDOWN (1 << 0) 1437ae18f37SLucas Stach #define UTMIP_FORCE_PDCHRP_POWERDOWN (1 << 2) 1447ae18f37SLucas Stach #define UTMIP_FORCE_PDDR_POWERDOWN (1 << 4) 1457ae18f37SLucas Stach 1467ae18f37SLucas Stach /* USB3_IF_USB_PHY_VBUS_SENSORS_0 */ 1477ae18f37SLucas Stach #define VBUS_VLD_STS (1 << 26) 1487ae18f37SLucas Stach 1497ae18f37SLucas Stach 1507ae18f37SLucas Stach /* Setup USB on the board */ 1517ae18f37SLucas Stach int board_usb_init(const void *blob); 1527ae18f37SLucas Stach 1537ae18f37SLucas Stach #endif /* _TEGRA_USB_H_ */ 154