| /* |
| * Copyright (C) 2005-2006 by Texas Instruments |
| * |
| * The Inventra Controller Driver for Linux is free software; you |
| * can redistribute it and/or modify it under the terms of the GNU |
| * General Public License version 2 as published by the Free Software |
| * Foundation. |
| */ |
| |
| #ifndef __MUSB_HDRDF_H__ |
| #define __MUSB_HDRDF_H__ |
| |
| /* Netra USB susbsystem register offsets */ |
| #define USBSS_REVISION 0x0000 |
| #define USBSS_SYSCONFIG 0x0010 |
| /* USBSS EOI interrupt register */ |
| #define USBSS_IRQ_EOI 0x0020 |
| /* USBSS interrupt generation/status register */ |
| #define USBSS_IRQ_STATUS_RAW 0x0024 |
| /* USBSS interrupt status register */ |
| #define USBSS_IRQ_STATUS 0x0028 |
| /* USBSS interrupt enable register */ |
| #define USBSS_IRQ_ENABLE_SET 0x002c |
| /* USBSS interrupt clear register */ |
| #define USBSS_IRQ_ENABLE_CLEAR 0x0030 |
| /* USB0: TxDMA 8bit tx completion interrupt pacing |
| threshold value for ep1..15 */ |
| #define USBSS_IRQ_DMA_THRESHOLD_TX0 0x0100 |
| /* USB0: RxDMA 8bit rx completion interrupt pacing |
| threshold value for ep1..15 */ |
| #define USBSS_IRQ_DMA_THRESHOLD_RX0 0x0110 |
| /* USB1: TxDMA 8bit tx completion interrupt pacing |
| threshold value for ep1..15 */ |
| #define USBSS_IRQ_DMA_THRESHOLD_TX1 0x0120 |
| /* USB1: RxDMA 8bit rx completion interrupt pacing |
| threshold value for ep1..15 */ |
| #define USBSS_IRQ_DMA_THRESHOLD_RX1 0x0130 |
| /* USB0: TxDMA threshold enable tx completion for ep1..ep15 |
| RxDMA threshold enable rx completion for ep1..ep15 */ |
| #define USBSS_IRQ_DMA_ENABLE_0 0x0140 |
| /* USB1: TxDMA threshold enable for ep1..ep15 |
| RxDMA threshold enable for ep1..ep15 */ |
| #define USBSS_IRQ_DMA_ENABLE_1 0x0144 |
| /* USB0: TxDMA Frame threshold for tx completion for ep1..ep15 |
| RxDMA Frame threshold for rx completion for ep1..ep15 */ |
| #define USBSS_IRQ_FRAME_THRESHOLD_TX0 0x0200 |
| #define USBSS_IRQ_FRAME_THRESHOLD_RX0 0x0210 |
| /* USB1: TxDMA Frame threshold for tx completion for ep1..ep15 |
| RxDMA Frame threshold for rx completion for ep1..ep15 */ |
| #define USBSS_IRQ_FRAME_THRESHOLD_TX1 0x0220 |
| #define USBSS_IRQ_FRAME_THRESHOLD_RX1 0x0230 |
| /* USB0: Frame threshold enable tx completion for ep1..ep15 |
| Frame threshold enable rx completion for ep1..ep15 */ |
| #define USBSS_IRQ_FRAME_ENABLE_0 0x0240 |
| #define USBSS_IRQ_FRAME_ENABLE_1 0x0244 |
| |
| |
| /* USB 2.0 OTG module registers */ |
| #define USB_REVISION_REG 0x0000 |
| #define USB_CTRL_REG 0x0014 |
| #define USB_STAT_REG 0x0018 |
| #define USB_IRQ_MERGED_STATUS 0x0020 |
| #define USB_IRQ_EOI 0x0024 |
| #define USB_IRQ_STATUS_RAW_0 0x0028 |
| #define USB_IRQ_STATUS_RAW_1 0x002c |
| #define USB_IRQ_STATUS_0 0x0030 |
| #define USB_IRQ_STATUS_1 0x0034 |
| #define USB_IRQ_ENABLE_SET_0 0x0038 |
| #define USB_IRQ_ENABLE_SET_1 0x003c |
| #define USB_IRQ_ENABLE_CLR_0 0x0040 |
| #define USB_IRQ_ENABLE_CLR_1 0x0044 |
| |
| #define USB_EP_INTR_SET_REG (USB_IRQ_ENABLE_SET_0) |
| #define USB_CORE_INTR_SET_REG (USB_IRQ_ENABLE_SET_1) |
| #define USB_EP_INTR_CLEAR_REG (USB_IRQ_ENABLE_CLR_0) |
| #define USB_CORE_INTR_CLEAR_REG (USB_IRQ_ENABLE_CLR_1) |
| #define USB_EP_INTR_STATUS_REG (USB_IRQ_STATUS_0) |
| #define USB_CORE_INTR_STATUS_REG (USB_IRQ_STATUS_1) |
| |
| #define USB_GRNDIS_EPSIZE_OFFS 0X0080 |
| #define USB_SRP_FIX_TIME_REG 0x00d4 |
| #define USB_PHY_UTMI_REG 0x00e0 |
| #define USB_PHY_UTMI_LB_REG 0x00e4 |
| #define USB_MODE_REG 0x00e8 |
| |
| #define QUEUE_THRESHOLD_INTR_ENABLE_REG 0xc0 |
| #define QUEUE_63_THRESHOLD_REG 0xc4 |
| #define QUEUE_63_THRESHOLD_INTR_CLEAR_REG 0xc8 |
| #define QUEUE_65_THRESHOLD_REG 0xd4 |
| #define QUEUE_65_THRESHOLD_INTR_CLEAR_REG 0xd8 |
| |
| /* Control register bits */ |
| #define USB_SOFT_RESET_MASK 1 |
| |
| /* Mode register bits */ |
| #define USB_MODE_SHIFT(n) ((((n) - 1) << 1)) |
| #define USB_MODE_MASK(n) (3 << USB_MODE_SHIFT(n)) |
| #define USB_RX_MODE_SHIFT(n) USB_MODE_SHIFT(n) |
| #define USB_TX_MODE_SHIFT(n) USB_MODE_SHIFT(n) |
| #define USB_RX_MODE_MASK(n) USB_MODE_MASK(n) |
| #define USB_TX_MODE_MASK(n) USB_MODE_MASK(n) |
| #define USB_TRANSPARENT_MODE 0 |
| #define USB_RNDIS_MODE 1 |
| #define USB_CDC_MODE 2 |
| #define USB_GENERIC_RNDIS_MODE 3 |
| |
| /* AutoReq register bits */ |
| #define USB_RX_AUTOREQ_SHIFT(n) (((n) - 1) << 1) |
| #define USB_RX_AUTOREQ_MASK(n) (3 << USB_RX_AUTOREQ_SHIFT(n)) |
| #define USB_NO_AUTOREQ 0 |
| #define USB_AUTOREQ_ALL_BUT_EOP 1 |
| #define USB_AUTOREQ_ALWAYS 3 |
| |
| /* Teardown register bits */ |
| #define USB_TX_TDOWN_SHIFT(n) (16 + (n)) |
| #define USB_TX_TDOWN_MASK(n) (1 << USB_TX_TDOWN_SHIFT(n)) |
| #define USB_RX_TDOWN_SHIFT(n) (n) |
| #define USB_RX_TDOWN_MASK(n) (1 << USB_RX_TDOWN_SHIFT(n)) |
| |
| /* USB interrupt register bits */ |
| #define USB_INTR_USB_SHIFT 0 |
| #define USB_INTR_USB_MASK (0x1ff << USB_INTR_USB_SHIFT) /* 8 Mentor */ |
| /* interrupts and DRVVBUS interrupt */ |
| #define USB_INTR_DRVVBUS 0x100 |
| #define USB_INTR_RX_SHIFT 16 |
| #define USB_INTR_TX_SHIFT 0 |
| |
| #define USB_MENTOR_CORE_OFFSET 0x400 |
| #define USB_CPPI41_NUM_CH 15 |
| |
| #define MAX_MUSB_INSTANCE 2 |
| /* CPPI 4.1 queue manager registers */ |
| #define QMGR_PEND0_REG 0x4090 |
| #define QMGR_PEND1_REG 0x4094 |
| #define QMGR_PEND2_REG 0x4098 |
| |
| #define QMGR_RGN_OFFS 0x4000 |
| #define QMRG_DESCRGN_OFFS 0x5000 |
| #define QMGR_REG_OFFS 0x6000 |
| #define QMGR_STAT_OFFS 0x7000 |
| #define DMA_GLBCTRL_OFFS 0x2000 |
| #define DMA_CHCTRL_OFFS 0x2800 |
| #define DMA_SCHED_OFFS 0x3000 |
| #define DMA_SCHEDTBL_OFFS 0x3800 |
| |
| #define USB_TX_EP_MASK 0xffff /* EP0 + 15 Tx EPs */ |
| #define USB_RX_EP_MASK 0xfffe /* 15 Rx EPs */ |
| |
| #define USB_TX_INTR_MASK (USB_TX_EP_MASK << USB_INTR_TX_SHIFT) |
| #define USB_RX_INTR_MASK (USB_RX_EP_MASK << USB_INTR_RX_SHIFT) |
| |
| #define A_WAIT_BCON_TIMEOUT 1100 /* in ms */ |
| |
| #define USBSS_INTR_RX_STARV 0x00000001 |
| #define USBSS_INTR_PD_CMPL 0x00000004 |
| #define USBSS_INTR_TX_CMPL 0x00000500 |
| #define USBSS_INTR_RX_CMPL 0x00000A00 |
| #define USBSS_INTR_FLAGS (USBSS_INTR_PD_CMPL | USBSS_INTR_TX_CMPL \ |
| | USBSS_INTR_RX_CMPL) |
| |
| extern void usb_nop_xceiv_register(int id); |
| void set_frame_threshold(u8 musb_id, u8 is_tx, u8 epnum, u8 value, u8 en_intr); |
| void set_dma_threshold(u8 musb_id, u8 is_tx, u8 epnum, u8 value); |
| #endif |