root/arch/mips/include/asm/mach-pmcs-msp71xx/msp_usb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /******************************************************************
   3  * Copyright (c) 2000-2007 PMC-Sierra INC.
   4  *
   5  * PMC-SIERRA INC. DISCLAIMS ANY LIABILITY OF ANY KIND
   6  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS
   7  * SOFTWARE.
   8  */
   9 #ifndef MSP_USB_H_
  10 #define MSP_USB_H_
  11 
  12 #define NUM_USB_DEVS   1
  13 
  14 /* Register spaces for USB host 0 */
  15 #define MSP_USB0_MAB_START      (MSP_USB0_BASE + 0x0)
  16 #define MSP_USB0_MAB_END        (MSP_USB0_BASE + 0x17)
  17 #define MSP_USB0_ID_START       (MSP_USB0_BASE + 0x40000)
  18 #define MSP_USB0_ID_END         (MSP_USB0_BASE + 0x4008f)
  19 #define MSP_USB0_HS_START       (MSP_USB0_BASE + 0x40100)
  20 #define MSP_USB0_HS_END         (MSP_USB0_BASE + 0x401FF)
  21 
  22 /* Register spaces for USB host 1 */
  23 #define MSP_USB1_MAB_START      (MSP_USB1_BASE + 0x0)
  24 #define MSP_USB1_MAB_END        (MSP_USB1_BASE + 0x17)
  25 #define MSP_USB1_ID_START       (MSP_USB1_BASE + 0x40000)
  26 #define MSP_USB1_ID_END         (MSP_USB1_BASE + 0x4008f)
  27 #define MSP_USB1_HS_START       (MSP_USB1_BASE + 0x40100)
  28 #define MSP_USB1_HS_END         (MSP_USB1_BASE + 0x401ff)
  29 
  30 /* USB Identification registers */
  31 struct msp_usbid_regs {
  32         u32 id;         /* 0x0: Identification register */
  33         u32 hwgen;      /* 0x4: General HW params */
  34         u32 hwhost;     /* 0x8: Host HW params */
  35         u32 hwdev;      /* 0xc: Device HW params */
  36         u32 hwtxbuf;    /* 0x10: Tx buffer HW params */
  37         u32 hwrxbuf;    /* 0x14: Rx buffer HW params */
  38         u32 reserved[26];
  39         u32 timer0_load; /* 0x80: General-purpose timer 0 load*/
  40         u32 timer0_ctrl; /* 0x84: General-purpose timer 0 control */
  41         u32 timer1_load; /* 0x88: General-purpose timer 1 load*/
  42         u32 timer1_ctrl; /* 0x8c: General-purpose timer 1 control */
  43 };
  44 
  45 /* MSBus to AMBA registers */
  46 struct msp_mab_regs {
  47         u32 isr;        /* 0x0: Interrupt status */
  48         u32 imr;        /* 0x4: Interrupt mask */
  49         u32 thcr0;      /* 0x8: Transaction header capture 0 */
  50         u32 thcr1;      /* 0xc: Transaction header capture 1 */
  51         u32 int_stat;   /* 0x10: Interrupt status summary */
  52         u32 phy_cfg;    /* 0x14: USB phy config */
  53 };
  54 
  55 /* EHCI registers */
  56 struct msp_usbhs_regs {
  57         u32 hciver;     /* 0x0: Version and offset to operational regs */
  58         u32 hcsparams;  /* 0x4: Host control structural parameters */
  59         u32 hccparams;  /* 0x8: Host control capability parameters */
  60         u32 reserved0[5];
  61         u32 dciver;     /* 0x20: Device interface version */
  62         u32 dccparams;  /* 0x24: Device control capability parameters */
  63         u32 reserved1[6];
  64         u32 cmd;        /* 0x40: USB command */
  65         u32 sts;        /* 0x44: USB status */
  66         u32 int_ena;    /* 0x48: USB interrupt enable */
  67         u32 frindex;    /* 0x4c: Frame index */
  68         u32 reserved3;
  69         union {
  70                 struct {
  71                         u32 flb_addr; /* 0x54: Frame list base address */
  72                         u32 next_async_addr; /* 0x58: next asynchronous addr */
  73                         u32 ttctrl; /* 0x5c: embedded transaction translator
  74                                                         async buffer status */
  75                         u32 burst_size; /* 0x60: Controller burst size */
  76                         u32 tx_fifo_ctrl; /* 0x64: Tx latency FIFO tuning */
  77                         u32 reserved0[4];
  78                         u32 endpt_nak; /* 0x78: Endpoint NAK */
  79                         u32 endpt_nak_ena; /* 0x7c: Endpoint NAK enable */
  80                         u32 cfg_flag; /* 0x80: Config flag */
  81                         u32 port_sc1; /* 0x84: Port status & control 1 */
  82                         u32 reserved1[7];
  83                         u32 otgsc;      /* 0xa4: OTG status & control */
  84                         u32 mode;       /* 0xa8: USB controller mode */
  85                 } host;
  86 
  87                 struct {
  88                         u32 dev_addr; /* 0x54: Device address */
  89                         u32 endpt_list_addr; /* 0x58: Endpoint list address */
  90                         u32 reserved0[7];
  91                         u32 endpt_nak;  /* 0x74 */
  92                         u32 endpt_nak_ctrl; /* 0x78 */
  93                         u32 cfg_flag; /* 0x80 */
  94                         u32 port_sc1; /* 0x84: Port status & control 1 */
  95                         u32 reserved[7];
  96                         u32 otgsc;      /* 0xa4: OTG status & control */
  97                         u32 mode;       /* 0xa8: USB controller mode */
  98                         u32 endpt_setup_stat; /* 0xac */
  99                         u32 endpt_prime; /* 0xb0 */
 100                         u32 endpt_flush; /* 0xb4 */
 101                         u32 endpt_stat; /* 0xb8 */
 102                         u32 endpt_complete; /* 0xbc */
 103                         u32 endpt_ctrl0; /* 0xc0 */
 104                         u32 endpt_ctrl1; /* 0xc4 */
 105                         u32 endpt_ctrl2; /* 0xc8 */
 106                         u32 endpt_ctrl3; /* 0xcc */
 107                 } device;
 108         } u;
 109 };
 110 /*
 111  * Container for the more-generic platform_device.
 112  * This exists mainly as a way to map the non-standard register
 113  * spaces and make them accessible to the USB ISR.
 114  */
 115 struct mspusb_device {
 116         struct msp_mab_regs   __iomem *mab_regs;
 117         struct msp_usbid_regs __iomem *usbid_regs;
 118         struct msp_usbhs_regs __iomem *usbhs_regs;
 119         struct platform_device dev;
 120 };
 121 
 122 #define to_mspusb_device(x) container_of((x), struct mspusb_device, dev)
 123 #define TO_HOST_ID(x) ((x) & 0x3)
 124 #endif /*MSP_USB_H_*/

/* [<][>][^][v][top][bottom][index][help] */