uboot/arch/arm/include/asm/arch-tegra/usb.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2011 The Chromium OS Authors.
   3 * Copyright (c) 2013 NVIDIA Corporation
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7
   8#ifndef _TEGRA_USB_H_
   9#define _TEGRA_USB_H_
  10
  11/* USB Controller (USBx_CONTROLLER_) regs */
  12struct usb_ctlr {
  13        /* 0x000 */
  14        uint id;
  15        uint reserved0;
  16        uint host;
  17        uint device;
  18
  19        /* 0x010 */
  20        uint txbuf;
  21        uint rxbuf;
  22        uint reserved1[2];
  23
  24        /* 0x020 */
  25        uint reserved2[56];
  26
  27        /* 0x100 */
  28        u16 cap_length;
  29        u16 hci_version;
  30        uint hcs_params;
  31        uint hcc_params;
  32        uint reserved3[5];
  33
  34        /* 0x120 */
  35        uint dci_version;
  36        uint dcc_params;
  37        uint reserved4[2];
  38
  39#ifdef CONFIG_TEGRA20
  40        /* 0x130 */
  41        uint reserved4_2[4];
  42
  43        /* 0x140 */
  44        uint usb_cmd;
  45        uint usb_sts;
  46        uint usb_intr;
  47        uint frindex;
  48
  49        /* 0x150 */
  50        uint reserved5;
  51        uint periodic_list_base;
  52        uint async_list_addr;
  53        uint async_tt_sts;
  54
  55        /* 0x160 */
  56        uint burst_size;
  57        uint tx_fill_tuning;
  58        uint reserved6;   /* is this port_sc1 on some controllers? */
  59        uint icusb_ctrl;
  60
  61        /* 0x170 */
  62        uint ulpi_viewport;
  63        uint reserved7;
  64        uint endpt_nak;
  65        uint endpt_nak_enable;
  66
  67        /* 0x180 */
  68        uint reserved;
  69        uint port_sc1;
  70        uint reserved8[6];
  71
  72        /* 0x1a0 */
  73        uint reserved9;
  74        uint otgsc;
  75        uint usb_mode;
  76        uint endpt_setup_stat;
  77
  78        /* 0x1b0 */
  79        uint reserved10[20];
  80
  81        /* 0x200 */
  82        uint reserved11[0x80];
  83#else
  84        /* 0x130 */
  85        uint usb_cmd;
  86        uint usb_sts;
  87        uint usb_intr;
  88        uint frindex;
  89
  90        /* 0x140 */
  91        uint reserved5;
  92        uint periodic_list_base;
  93        uint async_list_addr;
  94        uint reserved5_1;
  95
  96        /* 0x150 */
  97        uint burst_size;
  98        uint tx_fill_tuning;
  99        uint reserved6;
 100        uint icusb_ctrl;
 101
 102        /* 0x160 */
 103        uint ulpi_viewport;
 104        uint reserved7[3];
 105
 106        /* 0x170 */
 107        uint reserved;
 108        uint port_sc1;
 109        uint reserved8[6];
 110
 111        /* 0x190 */
 112        uint reserved9[8];
 113
 114        /* 0x1b0 */
 115        uint reserved10;
 116        uint hostpc1_devlc;
 117        uint reserved10_1[2];
 118
 119        /* 0x1c0 */
 120        uint reserved10_2[4];
 121
 122        /* 0x1d0 */
 123        uint reserved10_3[4];
 124
 125        /* 0x1e0 */
 126        uint reserved10_4[4];
 127
 128        /* 0x1f0 */
 129        uint reserved10_5;
 130        uint otgsc;
 131        uint usb_mode;
 132        uint reserved10_6;
 133
 134        /* 0x200 */
 135        uint endpt_nak;
 136        uint endpt_nak_enable;
 137        uint endpt_setup_stat;
 138        uint reserved11_1[0x7D];
 139#endif
 140
 141        /* 0x400 */
 142        uint susp_ctrl;
 143        uint phy_vbus_sensors;
 144        uint phy_vbus_wakeup_id;
 145        uint phy_alt_vbus_sys;
 146
 147#ifdef CONFIG_TEGRA20
 148        /* 0x410 */
 149        uint usb1_legacy_ctrl;
 150        uint reserved12[4];
 151
 152        /* 0x424 */
 153        uint ulpi_timing_ctrl_0;
 154        uint ulpi_timing_ctrl_1;
 155        uint reserved13[53];
 156#else
 157
 158        /* 0x410 */
 159        uint usb1_legacy_ctrl;
 160        uint reserved12[3];
 161
 162        /* 0x420 */
 163        uint reserved13[56];
 164#endif
 165
 166        /* 0x500 */
 167        uint reserved14[64 * 3];
 168
 169        /* 0x800 */
 170        uint utmip_pll_cfg0;
 171        uint utmip_pll_cfg1;
 172        uint utmip_xcvr_cfg0;
 173        uint utmip_bias_cfg0;
 174
 175        /* 0x810 */
 176        uint utmip_hsrx_cfg0;
 177        uint utmip_hsrx_cfg1;
 178        uint utmip_fslsrx_cfg0;
 179        uint utmip_fslsrx_cfg1;
 180
 181        /* 0x820 */
 182        uint utmip_tx_cfg0;
 183        uint utmip_misc_cfg0;
 184        uint utmip_misc_cfg1;
 185        uint utmip_debounce_cfg0;
 186
 187        /* 0x830 */
 188        uint utmip_bat_chrg_cfg0;
 189        uint utmip_spare_cfg0;
 190        uint utmip_xcvr_cfg1;
 191        uint utmip_bias_cfg1;
 192};
 193
 194/* USB1_LEGACY_CTRL */
 195#define USB1_NO_LEGACY_MODE             1
 196
 197#define VBUS_SENSE_CTL_SHIFT                    1
 198#define VBUS_SENSE_CTL_MASK                     (3 << VBUS_SENSE_CTL_SHIFT)
 199#define VBUS_SENSE_CTL_VBUS_WAKEUP              0
 200#define VBUS_SENSE_CTL_AB_SESS_VLD_OR_VBUS_WAKEUP       1
 201#define VBUS_SENSE_CTL_AB_SESS_VLD              2
 202#define VBUS_SENSE_CTL_A_SESS_VLD               3
 203
 204/* USBx_IF_USB_SUSP_CTRL_0 */
 205#define UTMIP_PHY_ENB                           (1 << 12)
 206#define UTMIP_RESET                             (1 << 11)
 207#define USB_PHY_CLK_VALID                       (1 << 7)
 208#define USB_SUSP_CLR                            (1 << 5)
 209
 210#if defined(CONFIG_TEGRA20) || defined(CONFIG_TEGRA30)
 211/* USB2_IF_USB_SUSP_CTRL_0 */
 212#define ULPI_PHY_ENB                            (1 << 13)
 213
 214/* USB2_IF_ULPI_TIMING_CTRL_0 */
 215#define ULPI_OUTPUT_PINMUX_BYP                  (1 << 10)
 216#define ULPI_CLKOUT_PINMUX_BYP                  (1 << 11)
 217
 218/* USB2_IF_ULPI_TIMING_CTRL_1 */
 219#define ULPI_DATA_TRIMMER_LOAD                  (1 << 0)
 220#define ULPI_DATA_TRIMMER_SEL(x)                (((x) & 0x7) << 1)
 221#define ULPI_STPDIRNXT_TRIMMER_LOAD             (1 << 16)
 222#define ULPI_STPDIRNXT_TRIMMER_SEL(x)   (((x) & 0x7) << 17)
 223#define ULPI_DIR_TRIMMER_LOAD                   (1 << 24)
 224#define ULPI_DIR_TRIMMER_SEL(x)                 (((x) & 0x7) << 25)
 225#endif
 226
 227/* USBx_UTMIP_MISC_CFG0 */
 228#define UTMIP_SUSPEND_EXIT_ON_EDGE              (1 << 22)
 229
 230/* USBx_UTMIP_MISC_CFG1 */
 231#define UTMIP_PHY_XTAL_CLOCKEN                  (1 << 30)
 232
 233/*
 234 * Tegra 3 and later: Moved to Clock and Reset register space, see
 235 * CLK_RST_CONTROLLER_UTMIP_PLL_CFG2_0
 236 */
 237#define UTMIP_PLLU_STABLE_COUNT_SHIFT           6
 238#define UTMIP_PLLU_STABLE_COUNT_MASK            \
 239                                (0xfff << UTMIP_PLLU_STABLE_COUNT_SHIFT)
 240/*
 241 * Tegra 3 and later: Moved to Clock and Reset register space, see
 242 * CLK_RST_CONTROLLER_UTMIP_PLL_CFG2_0
 243 */
 244#define UTMIP_PLL_ACTIVE_DLY_COUNT_SHIFT        18
 245#define UTMIP_PLL_ACTIVE_DLY_COUNT_MASK         \
 246                                (0x1f << UTMIP_PLL_ACTIVE_DLY_COUNT_SHIFT)
 247
 248/* USBx_UTMIP_PLL_CFG1_0 */
 249/* Tegra 3 and later: Moved to Clock and Reset register space */
 250#define UTMIP_PLLU_ENABLE_DLY_COUNT_SHIFT       27
 251#define UTMIP_PLLU_ENABLE_DLY_COUNT_MASK        \
 252                                (0x1f << UTMIP_PLLU_ENABLE_DLY_COUNT_SHIFT)
 253#define UTMIP_XTAL_FREQ_COUNT_SHIFT             0
 254#define UTMIP_XTAL_FREQ_COUNT_MASK              0xfff
 255
 256/* USBx_UTMIP_BIAS_CFG0_0 */
 257#define UTMIP_HSDISCON_LEVEL_MSB                (1 << 24)
 258#define UTMIP_OTGPD                             (1 << 11)
 259#define UTMIP_BIASPD                            (1 << 10)
 260#define UTMIP_HSDISCON_LEVEL_SHIFT              2
 261#define UTMIP_HSDISCON_LEVEL_MASK               \
 262                                (0x3 << UTMIP_HSDISCON_LEVEL_SHIFT)
 263#define UTMIP_HSSQUELCH_LEVEL_SHIFT             0
 264#define UTMIP_HSSQUELCH_LEVEL_MASK              \
 265                                (0x3 << UTMIP_HSSQUELCH_LEVEL_SHIFT)
 266
 267/* USBx_UTMIP_BIAS_CFG1_0 */
 268#define UTMIP_FORCE_PDTRK_POWERDOWN             1
 269#define UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT     8
 270#define UTMIP_BIAS_DEBOUNCE_TIMESCALE_MASK      \
 271                                (0x3f << UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT)
 272#define UTMIP_BIAS_PDTRK_COUNT_SHIFT            3
 273#define UTMIP_BIAS_PDTRK_COUNT_MASK             \
 274                                (0x1f << UTMIP_BIAS_PDTRK_COUNT_SHIFT)
 275
 276/* USBx_UTMIP_DEBOUNCE_CFG0_0 */
 277#define UTMIP_DEBOUNCE_CFG0_SHIFT               0
 278#define UTMIP_DEBOUNCE_CFG0_MASK                0xffff
 279
 280/* USBx_UTMIP_TX_CFG0_0 */
 281#define UTMIP_FS_PREAMBLE_J                     (1 << 19)
 282
 283/* USBx_UTMIP_BAT_CHRG_CFG0_0 */
 284#define UTMIP_PD_CHRG                           1
 285
 286/* USBx_UTMIP_SPARE_CFG0_0 */
 287#define FUSE_SETUP_SEL                          (1 << 3)
 288
 289/* USBx_UTMIP_HSRX_CFG0_0 */
 290#define UTMIP_IDLE_WAIT_SHIFT                   15
 291#define UTMIP_IDLE_WAIT_MASK                    (0x1f << UTMIP_IDLE_WAIT_SHIFT)
 292#define UTMIP_ELASTIC_LIMIT_SHIFT               10
 293#define UTMIP_ELASTIC_LIMIT_MASK                \
 294                                (0x1f << UTMIP_ELASTIC_LIMIT_SHIFT)
 295
 296/* USBx_UTMIP_HSRX_CFG1_0 */
 297#define UTMIP_HS_SYNC_START_DLY_SHIFT           1
 298#define UTMIP_HS_SYNC_START_DLY_MASK            \
 299                                (0x1f << UTMIP_HS_SYNC_START_DLY_SHIFT)
 300
 301/* USBx_CONTROLLER_2_USB2D_ICUSB_CTRL_0 */
 302#define IC_ENB1                                 (1 << 3)
 303
 304#ifdef CONFIG_TEGRA20
 305/* PORTSC1, USB1 */
 306#define PTS1_SHIFT                              31
 307#define PTS1_MASK                               (1 << PTS1_SHIFT)
 308#define STS1                                    (1 << 30)
 309
 310/* PORTSC, USB2, USB3 */
 311#define PTS_SHIFT               30
 312#define PTS_MASK                (3U << PTS_SHIFT)
 313#define STS                     (1 << 29)
 314#else
 315/* USB2D_HOSTPC1_DEVLC_0 */
 316#define PTS_SHIFT                               29
 317#define PTS_MASK                                (0x7U << PTS_SHIFT)
 318#define STS                                             (1 << 28)
 319#endif
 320
 321#define PTS_UTMI        0
 322#define PTS_RESERVED    1
 323#define PTS_ULPI        2
 324#define PTS_ICUSB_SER   3
 325#define PTS_HSIC        4
 326
 327/* SB2_CONTROLLER_2_USB2D_PORTSC1_0 */
 328#define WKOC                            (1 << 22)
 329#define WKDS                            (1 << 21)
 330#define WKCN                            (1 << 20)
 331
 332/* USBx_UTMIP_XCVR_CFG0_0 */
 333#define UTMIP_FORCE_PD_POWERDOWN                (1 << 14)
 334#define UTMIP_FORCE_PD2_POWERDOWN               (1 << 16)
 335#define UTMIP_FORCE_PDZI_POWERDOWN              (1 << 18)
 336#define UTMIP_XCVR_LSBIAS_SE                    (1 << 21)
 337#define UTMIP_XCVR_HSSLEW_MSB_SHIFT             25
 338#define UTMIP_XCVR_HSSLEW_MSB_MASK              \
 339                        (0x7f << UTMIP_XCVR_HSSLEW_MSB_SHIFT)
 340#define UTMIP_XCVR_SETUP_MSB_SHIFT      22
 341#define UTMIP_XCVR_SETUP_MSB_MASK       (0x7 << UTMIP_XCVR_SETUP_MSB_SHIFT)
 342#define UTMIP_XCVR_SETUP_SHIFT          0
 343#define UTMIP_XCVR_SETUP_MASK           (0xf << UTMIP_XCVR_SETUP_SHIFT)
 344
 345/* USBx_UTMIP_XCVR_CFG1_0 */
 346#define UTMIP_XCVR_TERM_RANGE_ADJ_SHIFT         18
 347#define UTMIP_XCVR_TERM_RANGE_ADJ_MASK          \
 348                        (0xf << UTMIP_XCVR_TERM_RANGE_ADJ_SHIFT)
 349#define UTMIP_FORCE_PDDISC_POWERDOWN            (1 << 0)
 350#define UTMIP_FORCE_PDCHRP_POWERDOWN            (1 << 2)
 351#define UTMIP_FORCE_PDDR_POWERDOWN              (1 << 4)
 352
 353/* USB3_IF_USB_PHY_VBUS_SENSORS_0 */
 354#define VBUS_VLD_STS                    (1 << 26)
 355#define VBUS_B_SESS_VLD_SW_VALUE        (1 << 12)
 356#define VBUS_B_SESS_VLD_SW_EN           (1 << 11)
 357
 358/* Setup USB on the board */
 359int usb_process_devicetree(const void *blob);
 360
 361#endif  /* _TEGRA_USB_H_ */
 362