Home | History | Annotate | Line # | Download | only in usb
      1  1.29  jmcneill /*	$NetBSD: ohcireg.h,v 1.29 2024/09/22 14:05:47 jmcneill Exp $	*/
      2  1.10  augustss /*	$FreeBSD: src/sys/dev/usb/ohcireg.h,v 1.8 1999/11/17 22:33:40 n_hibma Exp $	*/
      3  1.10  augustss 
      4   1.1  augustss /*
      5   1.1  augustss  * Copyright (c) 1998 The NetBSD Foundation, Inc.
      6   1.1  augustss  * All rights reserved.
      7   1.1  augustss  *
      8   1.6  augustss  * This code is derived from software contributed to The NetBSD Foundation
      9  1.18  augustss  * by Lennart Augustsson (lennart (at) augustsson.net) at
     10   1.6  augustss  * Carlstedt Research & Technology.
     11   1.1  augustss  *
     12   1.1  augustss  * Redistribution and use in source and binary forms, with or without
     13   1.1  augustss  * modification, are permitted provided that the following conditions
     14   1.1  augustss  * are met:
     15   1.1  augustss  * 1. Redistributions of source code must retain the above copyright
     16   1.1  augustss  *    notice, this list of conditions and the following disclaimer.
     17   1.1  augustss  * 2. Redistributions in binary form must reproduce the above copyright
     18   1.1  augustss  *    notice, this list of conditions and the following disclaimer in the
     19   1.1  augustss  *    documentation and/or other materials provided with the distribution.
     20   1.1  augustss  *
     21   1.1  augustss  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     22   1.1  augustss  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     23   1.1  augustss  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     24   1.1  augustss  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     25   1.1  augustss  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     26   1.1  augustss  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     27   1.1  augustss  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     28   1.1  augustss  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     29   1.1  augustss  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     30   1.1  augustss  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     31   1.1  augustss  * POSSIBILITY OF SUCH DAMAGE.
     32   1.1  augustss  */
     33   1.1  augustss 
     34  1.26     skrll #ifndef _DEV_USB_OHCIREG_H_
     35  1.26     skrll #define _DEV_USB_OHCIREG_H_
     36   1.1  augustss 
     37   1.1  augustss /*** PCI config registers ***/
     38   1.1  augustss 
     39   1.1  augustss #define PCI_CBMEM		0x10	/* configuration base memory */
     40   1.2  augustss 
     41   1.2  augustss #define PCI_INTERFACE_OHCI	0x10
     42   1.1  augustss 
     43   1.1  augustss /*** OHCI registers */
     44   1.1  augustss 
     45   1.1  augustss #define OHCI_REVISION		0x00	/* OHCI revision # */
     46  1.28     skrll #define  OHCI_REV_LO_MASK	__BITS(3,0)
     47  1.28     skrll #define  OHCI_REV_HI_MASK	__BITS(7,4)
     48  1.28     skrll #define  OHCI_REV_LO(rev)	__SHIFTOUT((rev), OHCI_REV_LO_MASK)
     49  1.28     skrll #define  OHCI_REV_HI(rev)	__SHIFTOUT((rev), OHCI_REV_HI_MASK)
     50  1.28     skrll #define  OHCI_REV_LEGACY_MASK	__BIT(8)
     51  1.28     skrll #define  OHCI_REV_LEGACY(rev)	__SHIFTOUT((rev), OHCI_REV_LEGACY_MASK)
     52   1.1  augustss 
     53   1.1  augustss #define OHCI_CONTROL		0x04
     54  1.28     skrll #define  OHCI_CBSR_MASK		__BITS(1,0)	/* Control/Bulk Service Ratio */
     55  1.28     skrll #define  OHCI_CBSR_SET(x)	__SHIFTIN((x), OHCI_CBSR_MASK)
     56  1.28     skrll #define  OHCI_RATIO_1_1		0
     57  1.28     skrll #define  OHCI_RATIO_1_2		1
     58  1.28     skrll #define  OHCI_RATIO_1_3		2
     59  1.28     skrll #define  OHCI_RATIO_1_4		3
     60  1.28     skrll #define  OHCI_PLE		__BIT(2)	/* Periodic List Enable */
     61  1.28     skrll #define  OHCI_IE		__BIT(3)	/* Isochronous Enable */
     62  1.28     skrll #define  OHCI_CLE		__BIT(4)	/* Control List Enable */
     63  1.28     skrll #define  OHCI_BLE		__BIT(5)	/* Bulk List Enable */
     64  1.28     skrll #define  OHCI_HCFS_MASK		__BITS(7,6)	/* HostControllerFunctionalState */
     65  1.28     skrll #define  OHCI_SET_HCFS(x)	__SHIFTIN((x), OHCI_HCFS_MASK)
     66  1.28     skrll #define  OHCI_GET_HCFS(x)	__SHIFTOUT((x), OHCI_HCFS_MASK)
     67  1.28     skrll #define  OHCI_HCFS_RESET	0
     68  1.28     skrll #define  OHCI_HCFS_RESUME	1
     69  1.28     skrll #define  OHCI_HCFS_OPERATIONAL	2
     70  1.28     skrll #define  OHCI_HCFS_SUSPEND	3
     71  1.28     skrll #define  OHCI_IR		__BIT(8)       /* Interrupt Routing */
     72  1.28     skrll #define  OHCI_RWC		__BIT(9)       /* Remote Wakeup Connected */
     73  1.28     skrll #define  OHCI_RWE		__BIT(10)      /* Remote Wakeup Enabled */
     74   1.1  augustss #define OHCI_COMMAND_STATUS	0x08
     75  1.28     skrll #define  OHCI_HCR		__BIT(0)       /* Host Controller Reset */
     76  1.28     skrll #define  OHCI_CLF		__BIT(1)       /* Control List Filled */
     77  1.28     skrll #define  OHCI_BLF		__BIT(2)       /* Bulk List Filled */
     78  1.28     skrll #define  OHCI_OCR		__BIT(3)       /* Ownership Change Request */
     79  1.28     skrll #define  OHCI_SOC_MASK		__BITS(17,16)  /* Scheduling Overrun Count */
     80   1.1  augustss #define OHCI_INTERRUPT_STATUS	0x0c
     81  1.28     skrll #define  OHCI_SO		__BIT(0)	/* Scheduling Overrun */
     82  1.28     skrll #define  OHCI_WDH		__BIT(1)	/* Writeback Done Head */
     83  1.28     skrll #define  OHCI_SF		__BIT(2)	/* Start of Frame */
     84  1.28     skrll #define  OHCI_RD		__BIT(3)	/* Resume Detected */
     85  1.28     skrll #define  OHCI_UE		__BIT(4)	/* Unrecoverable Error */
     86  1.28     skrll #define  OHCI_FNO		__BIT(5)	/* Frame Number Overflow */
     87  1.28     skrll #define  OHCI_RHSC		__BIT(6)	/* Root Hub Status Change */
     88  1.28     skrll #define  OHCI_OC		__BIT(30)	/* Ownership Change */
     89  1.28     skrll #define  OHCI_MIE		__BIT(31)	/* Master Interrupt Enable */
     90   1.1  augustss #define OHCI_INTERRUPT_ENABLE	0x10
     91   1.1  augustss #define OHCI_INTERRUPT_DISABLE	0x14
     92   1.1  augustss #define OHCI_HCCA		0x18
     93   1.1  augustss #define OHCI_PERIOD_CURRENT_ED	0x1c
     94  1.28     skrll #define OHCI_PERIOD_CURRENT_ED	0x1c
     95   1.1  augustss #define OHCI_CONTROL_HEAD_ED	0x20
     96   1.1  augustss #define OHCI_CONTROL_CURRENT_ED	0x24
     97   1.1  augustss #define OHCI_BULK_HEAD_ED	0x28
     98   1.1  augustss #define OHCI_BULK_CURRENT_ED	0x2c
     99   1.1  augustss #define OHCI_DONE_HEAD		0x30
    100   1.1  augustss #define OHCI_FM_INTERVAL	0x34
    101  1.28     skrll #define  OHCI_FM_IVAL_MASK	__BITS(13,0)
    102  1.28     skrll #define  OHCI_FM_GET_IVAL(x)	__SHIFTOUT((x), OHCI_FM_IVAL_MASK)
    103  1.28     skrll #define  OHCI_FM_FSMPS_MASK	__BITS(30,16)
    104  1.28     skrll #define  OHCI_FM_GET_FSMPS(x)	__SHIFTOUT((x), OHCI_FM_FSMPS_MASK)
    105  1.28     skrll #define  OHCI_FM_SET_FSMPS(x)	__SHIFTIN((x), OHCI_FM_FSMPS_MASK)
    106  1.28     skrll #define  OHCI_FM_FIT		__BIT(31)
    107   1.1  augustss #define OHCI_FM_REMAINING	0x38
    108   1.1  augustss #define OHCI_FM_NUMBER		0x3c
    109   1.1  augustss #define OHCI_PERIODIC_START	0x40
    110   1.1  augustss #define OHCI_LS_THRESHOLD	0x44
    111   1.1  augustss #define OHCI_RH_DESCRIPTOR_A	0x48
    112  1.28     skrll #define  OHCI_RHD_NDP_MASK	__BITS(7,0)
    113  1.28     skrll #define  OHCI_RHD_GET_NDP(x)	__SHIFTOUT((x), OHCI_RHD_NDP_MASK)
    114  1.28     skrll #define  OHCI_RHD_PSM		__BIT(8)	/* Power Switching Mode */
    115  1.28     skrll #define  OHCI_RHD_NPS		__BIT(9)	/* No Power Switching */
    116  1.28     skrll #define  OHCI_RHD_DT		__BIT(10)	/* Device Type */
    117  1.28     skrll #define  OHCI_RHD_OCPM		__BIT(11)	/* Overcurrent Protection Mode */
    118  1.28     skrll #define  OHCI_RHD_NOCP		__BIT(12)	/* No Overcurrent Protection */
    119  1.28     skrll #define  OHCI_RHD_POTPGT_MASK	__BITS(31,24)
    120  1.28     skrll #define  OHCI_RHD_GET_POTPGT(x)	__SHIFTOUT((x), OHCI_RHD_POTPGT_MASK)
    121  1.28     skrll #define  OHCI_RHD_SET_POTPGT(x)	__SHIFTIN((x), OHCI_RHD_POTPGT_MASK)
    122   1.1  augustss #define OHCI_RH_DESCRIPTOR_B	0x4c
    123   1.1  augustss #define OHCI_RH_STATUS		0x50
    124  1.28     skrll #define  OHCI_RHS_LPS		__BIT(0)	/* Local Power Status */
    125  1.28     skrll #define  OHCI_RHS_OCI		__BIT(1)	/* OverCurrent Indicator */
    126  1.28     skrll #define  OHCI_RHS_DRWE		__BIT(15)	/* Device Remote Wakeup Enable */
    127  1.28     skrll #define  OHCI_RHS_LPSC		__BIT(16)	/* Local Power Status Change */
    128  1.28     skrll #define  OHCI_RHS_CCIC		__BIT(17)	/* OverCurrent Indicator Change */
    129  1.28     skrll #define  OHCI_RHS_CRWE		__BIT(31)	/* Clear Remote Wakeup Enable */
    130  1.28     skrll #define OHCI_RH_PORT_STATUS(n)	(0x50 + (n)*4)	/* 1 based indexing */
    131   1.1  augustss 
    132   1.1  augustss #define OHCI_LES (OHCI_PLE | OHCI_IE | OHCI_CLE | OHCI_BLE)
    133   1.7  augustss #define OHCI_ALL_INTRS (OHCI_SO | OHCI_WDH | OHCI_SF | OHCI_RD | OHCI_UE | \
    134  1.27     skrll 			OHCI_FNO | OHCI_RHSC | OHCI_OC)
    135   1.1  augustss #define OHCI_NORMAL_INTRS (OHCI_SO | OHCI_WDH | OHCI_RD | OHCI_UE | OHCI_RHSC)
    136   1.1  augustss 
    137   1.1  augustss #define OHCI_FSMPS(i) (((i-210)*6/7) << 16)
    138   1.1  augustss #define OHCI_PERIODIC(i) ((i)*9/10)
    139   1.1  augustss 
    140  1.27     skrll typedef uint32_t ohci_physaddr_t;
    141   1.1  augustss 
    142   1.1  augustss #define OHCI_NO_INTRS 32
    143   1.1  augustss struct ohci_hcca {
    144  1.22       scw 	volatile ohci_physaddr_t	hcca_interrupt_table[OHCI_NO_INTRS];
    145  1.29  jmcneill 	volatile uint32_t		hcca_frame_number;
    146  1.22       scw 	volatile ohci_physaddr_t	hcca_done_head;
    147   1.1  augustss #define OHCI_DONE_INTRS 1
    148   1.1  augustss };
    149   1.1  augustss #define OHCI_HCCA_SIZE 256
    150   1.1  augustss #define OHCI_HCCA_ALIGN 256
    151   1.9  augustss 
    152   1.9  augustss #define OHCI_PAGE_SIZE 0x1000
    153   1.9  augustss #define OHCI_PAGE(x) ((x) &~ 0xfff)
    154  1.16  augustss #define OHCI_PAGE_OFFSET(x) ((x) & 0xfff)
    155   1.1  augustss 
    156   1.1  augustss typedef struct {
    157  1.27     skrll 	volatile uint32_t	ed_flags;
    158  1.28     skrll #define OHCI_ED_ADDR_MASK	__BITS(6,0)
    159  1.28     skrll #define OHCI_ED_GET_FA(x)	__SHIFTOUT((x), OHCI_ED_ADDR_MASK)
    160  1.28     skrll #define OHCI_ED_SET_FA(x)	__SHIFTIN((x), OHCI_ED_ADDR_MASK)
    161  1.28     skrll #define OHCI_ED_EN_MASK		__BITS(10,7)
    162  1.28     skrll #define OHCI_ED_GET_EN(x)	__SHIFTOUT((x), OHCI_ED_EN_MASK)
    163  1.28     skrll #define OHCI_ED_SET_EN(x)	__SHIFTIN((x), OHCI_ED_EN_MASK)
    164  1.28     skrll #define OHCI_ED_DIR_MASK	__BITS(12,11)
    165  1.28     skrll #define OHCI_ED_GET_DIR(x)	__SHIFTOUT((x), OHCI_ED_DIR_MASK)
    166  1.28     skrll #define OHCI_ED_SET_DIR(x)	__SHIFTIN((x), OHCI_ED_DIR_MASK)
    167  1.28     skrll #define  OHCI_ED_DIR_TD		0
    168  1.28     skrll #define  OHCI_ED_DIR_OUT	1
    169  1.28     skrll #define  OHCI_ED_DIR_IN		2
    170  1.28     skrll #define OHCI_ED_SPEED		__BIT(13)
    171  1.28     skrll #define OHCI_ED_SKIP		__BIT(14)
    172  1.28     skrll #define OHCI_ED_FORMAT_MASK	__BIT(15)
    173  1.28     skrll #define OHCI_ED_GET_FORMAT(x)	__SHIFTOUT((x), OHCI_ED_FORMAT_MASK)
    174  1.28     skrll #define OHCI_ED_SET_FORMAT(x)	__SHIFTIN((x), OHCI_ED_FORMAT_MASK)
    175  1.28     skrll #define  OHCI_ED_FORMAT_GEN	0
    176  1.28     skrll #define  OHCI_ED_FORMAT_ISO	1
    177  1.28     skrll #define OHCI_ED_MAXP_MASK	__BITS(26,16)
    178  1.28     skrll #define OHCI_ED_GET_MAXP(x)	__SHIFTOUT((x), OHCI_ED_MAXP_MASK)
    179  1.28     skrll #define OHCI_ED_SET_MAXP(x)	__SHIFTIN((x), OHCI_ED_MAXP_MASK)
    180  1.22       scw 	volatile ohci_physaddr_t	ed_tailp;
    181  1.22       scw 	volatile ohci_physaddr_t	ed_headp;
    182  1.28     skrll #define OHCI_HALTED		__BIT(0)
    183  1.28     skrll #define OHCI_TOGGLECARRY	__BIT(1)
    184  1.28     skrll #define OHCI_HEADMASK		__BITS(31,2)
    185  1.22       scw 	volatile ohci_physaddr_t	ed_nexted;
    186   1.1  augustss } ohci_ed_t;
    187   1.8  augustss /* #define OHCI_ED_SIZE 16 */
    188   1.1  augustss #define OHCI_ED_ALIGN 16
    189  1.29  jmcneill #define OHCI_ED_ALLOC_ALIGN	MAX(OHCI_ED_ALIGN, CACHE_LINE_SIZE)
    190  1.29  jmcneill #define OHCI_ED_SIZE		(roundup(sizeof(ohci_ed_t), OHCI_ED_ALLOC_ALIGN))
    191  1.29  jmcneill #define OHCI_ED_CHUNK (PAGE_SIZE / OHCI_ED_SIZE)
    192  1.29  jmcneill 
    193   1.1  augustss 
    194   1.1  augustss typedef struct {
    195  1.27     skrll 	volatile uint32_t	td_flags;
    196  1.28     skrll #define OHCI_TD_R		__BIT(18)	/* Buffer Rounding  */
    197  1.28     skrll #define OHCI_TD_DP_MASK		__BITS(20,19)	/* Direction / PID */
    198  1.28     skrll #define OHCI_TD_GET_DP(x)	__SHIFTOUT((x), OHCI_TD_DP_MASK)
    199  1.28     skrll #define OHCI_TD_SET_DP(x)	__SHIFTIN((x), OHCI_TD_DP_MASK)
    200  1.28     skrll #define  OHCI_TD_DP_SETUP	0
    201  1.28     skrll #define  OHCI_TD_DP_OUT		1
    202  1.28     skrll #define  OHCI_TD_DP_IN		2
    203  1.28     skrll #define OHCI_TD_DI_MASK		__BITS(23,21)	/* Delay Interrupt */
    204  1.28     skrll #define OHCI_TD_GET_DI(x)	__SHIFTOUT((x), OHCI_TD_DI_MASK)
    205  1.28     skrll #define OHCI_TD_SET_DI(x)	__SHIFTIN((x), OHCI_TD_DI_MASK)
    206  1.28     skrll #define  OHCI_TD_NOINTR		__SHIFTOUT_MASK(OHCI_TD_DI_MASK)
    207  1.28     skrll #define OHCI_TD_TOGGLE_MASK	__BITS(25,24)	/* Toggle */
    208  1.28     skrll #define OHCI_TD_GET_TOGGLE(x)	__SHIFTOUT((x), OHCI_TD_TOGGLE_MASK)
    209  1.28     skrll #define OHCI_TD_SET_TOGGLE(x)	__SHIFTIN((x), OHCI_TD_TOGGLE_MASK)
    210  1.28     skrll #define  OHCI_TD_TOGGLE_CARRY	0
    211  1.28     skrll #define  OHCI_TD_TOGGLE_0	2
    212  1.28     skrll #define  OHCI_TD_TOGGLE_1	3
    213  1.28     skrll #define OHCI_TD_EC_MASK		__BITS(27,26)	/* Error Count */
    214  1.28     skrll #define OHCI_TD_GET_EC(x)	__SHIFTOUT((x), OHCI_TD_EC_MASK)
    215  1.28     skrll #define OHCI_TD_CC_MASK		__BITS(31,28)	/* Condition Code */
    216  1.28     skrll #define OHCI_TD_GET_CC(x)	__SHIFTOUT((x), OHCI_TD_CC_MASK)
    217  1.28     skrll #define OHCI_TD_SET_CC(x)	__SHIFTIN((x), OHCI_TD_CC_MASK)
    218  1.28     skrll 
    219  1.28     skrll #define  OHCI_TD_NOCC		__SHIFTOUT_MASK(OHCI_TD_CC_MASK)
    220  1.28     skrll 
    221  1.22       scw 	volatile ohci_physaddr_t td_cbp;	/* Current Buffer Pointer */
    222  1.22       scw 	volatile ohci_physaddr_t td_nexttd;	/* Next TD */
    223  1.22       scw 	volatile ohci_physaddr_t td_be;		/* Buffer End */
    224   1.1  augustss } ohci_td_t;
    225   1.8  augustss /* #define OHCI_TD_SIZE 16 */
    226   1.1  augustss #define OHCI_TD_ALIGN 16
    227  1.29  jmcneill #define OHCI_TD_ALLOC_ALIGN	MAX(OHCI_TD_ALIGN, CACHE_LINE_SIZE)
    228  1.29  jmcneill #define OHCI_TD_SIZE		(roundup(sizeof(ohci_td_t), OHCI_TD_ALLOC_ALIGN))
    229  1.29  jmcneill #define OHCI_TD_CHUNK (PAGE_SIZE / OHCI_TD_SIZE)
    230  1.29  jmcneill 
    231  1.11  augustss 
    232  1.11  augustss #define OHCI_ITD_NOFFSET 8
    233  1.11  augustss typedef struct {
    234  1.27     skrll 	volatile uint32_t	itd_flags;
    235  1.28     skrll #define OHCI_ITD_SF_MASK	__BITS(15,0)
    236  1.28     skrll #define OHCI_ITD_GET_SF(x)	__SHIFTOUT((x), OHCI_ITD_SF_MASK)
    237  1.28     skrll #define OHCI_ITD_SET_SF(x)	__SHIFTIN((x), OHCI_ITD_SF_MASK)
    238  1.28     skrll #define OHCI_ITD_DI_MASK	__BITS(23,21)	/* Delay Interrupt */
    239  1.28     skrll #define OHCI_ITD_GET_DI(x)	__SHIFTOUT((x), OHCI_ITD_DI_MASK)
    240  1.28     skrll #define OHCI_ITD_SET_DI(x)	__SHIFTIN((x), OHCI_ITD_DI_MASK)
    241  1.28     skrll #define OHCI_ITD_FC_MASK	__BITS(26,24)	/* Frame Count */
    242  1.28     skrll #define OHCI_ITD_GET_FC(x)	(__SHIFTOUT((x), OHCI_ITD_FC_MASK) + 1)
    243  1.28     skrll #define OHCI_ITD_SET_FC(x)	__SHIFTIN(((x) - 1), OHCI_ITD_FC_MASK)
    244  1.28     skrll #define OHCI_ITD_CC_MASK	__BITS(31,28)	/* Condition Code */
    245  1.28     skrll #define OHCI_ITD_GET_CC(x)	__SHIFTOUT((x), OHCI_ITD_CC_MASK)
    246  1.28     skrll #define OHCI_ITD_SET_CC(x)	__SHIFTIN((x), OHCI_ITD_CC_MASK)
    247  1.28     skrll #define  OHCI_ITD_NOCC		__SHIFTOUT_MASK(OHCI_ITD_CC_MASK)
    248  1.28     skrll 	volatile ohci_physaddr_t itd_bp0;	/* Buffer Page 0 */
    249  1.28     skrll 	volatile ohci_physaddr_t itd_nextitd;	/* Next ITD */
    250  1.28     skrll 	volatile ohci_physaddr_t itd_be;	/* Buffer End */
    251  1.27     skrll 	volatile uint16_t itd_offset[OHCI_ITD_NOFFSET];/* Buffer offsets */
    252  1.28     skrll #define itd_pswn itd_offset			/* Packet Status Word*/
    253  1.28     skrll #define OHCI_ITD_PAGE_SELECT	__BIT(12)
    254  1.16  augustss #define OHCI_ITD_MK_OFFS(len)	(0xe000 | ((len) & 0x1fff))
    255  1.28     skrll 
    256  1.28     skrll #define OHCI_ITD_PSW_SIZE_MASK	__BITS(10,0)	/* Transfer length */
    257  1.28     skrll #define OHCI_ITD_PSW_SIZE(x)	__SHIFTOUT((x), OHCI_ITD_PSW_SIZE_MASK)
    258  1.28     skrll #define OHCI_ITD_PSW_CC_MASK	__BITS(15,12)	/* Condition Code */
    259  1.28     skrll #define OHCI_ITD_PSW_GET_CC(x)	__SHIFTOUT((x), OHCI_ITD_PSW_CC_MASK)
    260  1.11  augustss } ohci_itd_t;
    261  1.11  augustss /* #define OHCI_ITD_SIZE 32 */
    262  1.11  augustss #define OHCI_ITD_ALIGN 32
    263  1.29  jmcneill #define OHCI_ITD_ALLOC_ALIGN	MAX(OHCI_ITD_ALIGN, CACHE_LINE_SIZE)
    264  1.29  jmcneill #define OHCI_ITD_SIZE		(roundup(sizeof(ohci_itd_t), OHCI_ITD_ALLOC_ALIGN))
    265  1.29  jmcneill #define OHCI_ITD_CHUNK		(PAGE_SIZE / OHCI_ITD_SIZE)
    266  1.19  augustss 
    267   1.1  augustss 
    268   1.1  augustss #define OHCI_CC_NO_ERROR		0
    269   1.1  augustss #define OHCI_CC_CRC			1
    270   1.1  augustss #define OHCI_CC_BIT_STUFFING		2
    271   1.1  augustss #define OHCI_CC_DATA_TOGGLE_MISMATCH	3
    272   1.1  augustss #define OHCI_CC_STALL			4
    273   1.1  augustss #define OHCI_CC_DEVICE_NOT_RESPONDING	5
    274   1.1  augustss #define OHCI_CC_PID_CHECK_FAILURE	6
    275   1.1  augustss #define OHCI_CC_UNEXPECTED_PID		7
    276   1.1  augustss #define OHCI_CC_DATA_OVERRUN		8
    277   1.1  augustss #define OHCI_CC_DATA_UNDERRUN		9
    278   1.1  augustss #define OHCI_CC_BUFFER_OVERRUN		12
    279   1.1  augustss #define OHCI_CC_BUFFER_UNDERRUN		13
    280  1.20    toshii #define OHCI_CC_NOT_ACCESSED		14
    281  1.20    toshii #define OHCI_CC_NOT_ACCESSED_MASK	14
    282  1.17  augustss 
    283  1.17  augustss /* Some delay needed when changing certain registers. */
    284  1.17  augustss #define OHCI_ENABLE_POWER_DELAY	5
    285  1.17  augustss #define OHCI_READ_DESC_DELAY	5
    286   1.1  augustss 
    287  1.26     skrll #endif /* _DEV_USB_OHCIREG_H_ */
    288