// SPDX-License-Identifier: GPL-2.0+ /* * USB 338x super/high/full speed USB device controller. * Unlike many such controllers, this one talks PCI. * * Copyright (C) 2002 NetChip Technology, Inc. (http://www.netchip.com) * Copyright (C) 2003 David Brownell * Copyright (C) 2014 Ricardo Ribalda - Qtechnology/AS * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __LINUX_USB_USB338X_H #define __LINUX_USB_USB338X_H #include <linux/usb/net2280.h> /* * Extra defined bits for net2280 registers */ #define SCRATCH 0x0b #define DEFECT7374_FSM_FIELD 28 #define SUPER_SPEED 8 #define DMA_REQUEST_OUTSTANDING 5 #define DMA_PAUSE_DONE_INTERRUPT 26 #define SET_ISOCHRONOUS_DELAY 24 #define SET_SEL 22 #define SUPER_SPEED_MODE 8 /*ep_cfg*/ #define MAX_BURST_SIZE 24 #define EP_FIFO_BYTE_COUNT 16 #define IN_ENDPOINT_ENABLE 14 #define IN_ENDPOINT_TYPE 12 #define OUT_ENDPOINT_ENABLE 10 #define OUT_ENDPOINT_TYPE 8 #define USB3380_EP_CFG_MASK_IN ((0x3 << IN_ENDPOINT_TYPE) | \ BIT(IN_ENDPOINT_ENABLE)) #define USB3380_EP_CFG_MASK_OUT ((0x3 << OUT_ENDPOINT_TYPE) | \ BIT(OUT_ENDPOINT_ENABLE)) struct usb338x_usb_ext_regs { u32 usbclass; #define DEVICE_PROTOCOL 16 #define DEVICE_SUB_CLASS 8 #define DEVICE_CLASS 0 u32 ss_sel; #define U2_SYSTEM_EXIT_LATENCY 8 #define U1_SYSTEM_EXIT_LATENCY 0 u32 ss_del; #define U2_DEVICE_EXIT_LATENCY 8 #define U1_DEVICE_EXIT_LATENCY 0 u32 usb2lpm; #define USB_L1_LPM_HIRD 2 #define USB_L1_LPM_REMOTE_WAKE 1 #define USB_L1_LPM_SUPPORT 0 u32 usb3belt; #define BELT_MULTIPLIER 10 #define BEST_EFFORT_LATENCY_TOLERANCE 0 u32 usbctl2; #define LTM_ENABLE 7 #define U2_ENABLE 6 #define U1_ENABLE 5 #define FUNCTION_SUSPEND 4 #define USB3_CORE_ENABLE 3 #define USB2_CORE_ENABLE 2 #define SERIAL_NUMBER_STRING_ENABLE 0 u32 in_timeout; #define GPEP3_TIMEOUT 19 #define GPEP2_TIMEOUT 18 #define GPEP1_TIMEOUT 17 #define GPEP0_TIMEOUT 16 #define GPEP3_TIMEOUT_VALUE 13 #define GPEP3_TIMEOUT_ENABLE 12 #define GPEP2_TIMEOUT_VALUE 9 #define GPEP2_TIMEOUT_ENABLE 8 #define GPEP1_TIMEOUT_VALUE 5 #define GPEP1_TIMEOUT_ENABLE 4 #define GPEP0_TIMEOUT_VALUE 1 #define GPEP0_TIMEOUT_ENABLE 0 u32 isodelay; #define ISOCHRONOUS_DELAY 0 } __packed; struct usb338x_fifo_regs { /* offset 0x0500, 0x0520, 0x0540, 0x0560, 0x0580 */ u32 ep_fifo_size_base; #define IN_FIFO_BASE_ADDRESS 22 #define IN_FIFO_SIZE 16 #define OUT_FIFO_BASE_ADDRESS 6 #define OUT_FIFO_SIZE 0 u32 ep_fifo_out_wrptr; u32 ep_fifo_out_rdptr; u32 ep_fifo_in_wrptr; u32 ep_fifo_in_rdptr; u32 unused[3]; } __packed; /* Link layer */ struct usb338x_ll_regs { /* offset 0x700 */ u32 ll_ltssm_ctrl1; u32 ll_ltssm_ctrl2; u32 ll_ltssm_ctrl3; u32 unused[2]; u32 ll_general_ctrl0; u32 ll_general_ctrl1; #define PM_U3_AUTO_EXIT 29 #define PM_U2_AUTO_EXIT 28 #define PM_U1_AUTO_EXIT 27 #define PM_FORCE_U2_ENTRY 26 #define PM_FORCE_U1_ENTRY 25 #define PM_LGO_COLLISION_SEND_LAU 24 #define PM_DIR_LINK_REJECT 23 #define PM_FORCE_LINK_ACCEPT 22 #define PM_DIR_ENTRY_U3 20 #define PM_DIR_ENTRY_U2 19 #define PM_DIR_ENTRY_U1 18 #define PM_U2_ENABLE 17 #define PM_U1_ENABLE 16 #define SKP_THRESHOLD_ADJUST_FMW 8 #define RESEND_DPP_ON_LRTY_FMW 7 #define DL_BIT_VALUE_FMW 6 #define FORCE_DL_BIT 5 u32 ll_general_ctrl2; #define SELECT_INVERT_LANE_POLARITY 7 #define FORCE_INVERT_LANE_POLARITY 6 u32 ll_general_ctrl3; u32 ll_general_ctrl4; u32 ll_error_gen; } __packed; struct usb338x_ll_lfps_regs { /* offset 0x748 */ u32 ll_lfps_5; #define TIMER_LFPS_6US 16 u32 ll_lfps_6; #define TIMER_LFPS_80US 0 } __packed; struct usb338x_ll_tsn_regs { /* offset 0x77C */ u32 ll_tsn_counters_2; #define HOT_TX_NORESET_TS2 24 u32 ll_tsn_counters_3; #define HOT_RX_RESET_TS2 0 } __packed; struct usb338x_ll_chi_regs { /* offset 0x79C */ u32 ll_tsn_chicken_bit; #define RECOVERY_IDLE_TO_RECOVER_FMW 3 } __packed; /* protocol layer */ struct usb338x_pl_regs { /* offset 0x800 */ u32 pl_reg_1; u32 pl_reg_2; u32 pl_reg_3; u32 pl_reg_4; u32 pl_ep_ctrl; /* Protocol Layer Endpoint Control*/ #define PL_EP_CTRL 0x810 #define ENDPOINT_SELECT 0 /* [4:0] */ #define EP_INITIALIZED 16 #define SEQUENCE_NUMBER_RESET 17 #define CLEAR_ACK_ERROR_CODE 20 u32 pl_reg_6; u32 pl_reg_7; u32 pl_reg_8; u32 pl_ep_status_1; /* Protocol Layer Endpoint Status 1*/ #define PL_EP_STATUS_1 0x820 #define STATE 16 #define ACK_GOOD_NORMAL 0x11 #define ACK_GOOD_MORE_ACKS_TO_COME 0x16 u32 pl_ep_status_2; u32 pl_ep_status_3; /* Protocol Layer Endpoint Status 3*/ #define PL_EP_STATUS_3 0x828 #define SEQUENCE_NUMBER 0 u32 pl_ep_status_4; /* Protocol Layer Endpoint Status 4*/ #define PL_EP_STATUS_4 0x82c u32 pl_ep_cfg_4; /* Protocol Layer Endpoint Configuration 4*/ #define PL_EP_CFG_4 0x830 #define NON_CTRL_IN_TOLERATE_BAD_DIR 6 } __packed; #endif /* __LINUX_USB_USB338X_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
association.h | File | 4.59 KB | 0644 |
|
atmel_usba_udc.h | File | 421 B | 0644 |
|
audio-v2.h | File | 13.17 KB | 0644 |
|
audio.h | File | 1.23 KB | 0644 |
|
c67x00.h | File | 1.82 KB | 0644 |
|
cdc-wdm.h | File | 651 B | 0644 |
|
cdc.h | File | 1.48 KB | 0644 |
|
cdc_ncm.h | File | 5.56 KB | 0644 |
|
ch9.h | File | 2.5 KB | 0644 |
|
chipidea.h | File | 2.77 KB | 0644 |
|
composite.h | File | 25.17 KB | 0644 |
|
ehci-dbgp.h | File | 2.05 KB | 0644 |
|
ehci_def.h | File | 7.89 KB | 0644 |
|
ehci_pdriver.h | File | 2.31 KB | 0644 |
|
ezusb.h | File | 286 B | 0644 |
|
functionfs.h | File | 151 B | 0644 |
|
g_hid.h | File | 1.13 KB | 0644 |
|
gadget.h | File | 32.65 KB | 0644 |
|
gadget_configfs.h | File | 2.94 KB | 0644 |
|
gpio_vbus.h | File | 1.13 KB | 0644 |
|
hcd.h | File | 25.93 KB | 0644 |
|
input.h | File | 716 B | 0644 |
|
iowarrior.h | File | 1.34 KB | 0644 |
|
irda.h | File | 3.76 KB | 0644 |
|
isp116x.h | File | 1.13 KB | 0644 |
|
isp1301.h | File | 2.38 KB | 0644 |
|
isp1362.h | File | 1.59 KB | 0644 |
|
isp1760.h | File | 633 B | 0644 |
|
m66592.h | File | 1.41 KB | 0644 |
|
musb-ux500.h | File | 899 B | 0644 |
|
musb.h | File | 4.59 KB | 0644 |
|
net2280.h | File | 23.55 KB | 0644 |
|
of.h | File | 1.46 KB | 0644 |
|
ohci_pdriver.h | File | 1.71 KB | 0644 |
|
otg-fsm.h | File | 8.61 KB | 0644 |
|
otg.h | File | 3.01 KB | 0644 |
|
pd.h | File | 8.98 KB | 0644 |
|
pd_bdo.h | File | 1011 B | 0644 |
|
pd_vdo.h | File | 7.58 KB | 0644 |
|
phy.h | File | 9.25 KB | 0644 |
|
phy_companion.h | File | 1.17 KB | 0644 |
|
quirks.h | File | 2.34 KB | 0644 |
|
r8a66597.h | File | 17.65 KB | 0644 |
|
renesas_usbhs.h | File | 4.76 KB | 0644 |
|
rndis_host.h | File | 5.94 KB | 0644 |
|
samsung_usb_phy.h | File | 530 B | 0644 |
|
serial.h | File | 17.12 KB | 0644 |
|
sl811.h | File | 838 B | 0644 |
|
storage.h | File | 2.58 KB | 0644 |
|
tcpm.h | File | 6.46 KB | 0644 |
|
tegra_usb_phy.h | File | 2.38 KB | 0644 |
|
tilegx.h | File | 983 B | 0644 |
|
typec.h | File | 7.04 KB | 0644 |
|
uas.h | File | 2.07 KB | 0644 |
|
ulpi.h | File | 1.99 KB | 0644 |
|
usb338x.h | File | 7.63 KB | 0644 |
|
usb_phy_generic.h | File | 892 B | 0644 |
|
usbnet.h | File | 10.01 KB | 0644 |
|
wusb-wa.h | File | 7.5 KB | 0644 |
|
wusb.h | File | 9.92 KB | 0644 |
|
xhci-dbgp.h | File | 825 B | 0644 |
|