Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
873077ea
Commit
873077ea
authored
Jul 06, 2002
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
USB: removed the usb-uhci.o driver
parent
c11abe19
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
0 additions
and
3985 deletions
+0
-3985
drivers/usb/host/Makefile
drivers/usb/host/Makefile
+0
-1
drivers/usb/host/uhci.h
drivers/usb/host/uhci.h
+0
-441
drivers/usb/host/usb-uhci-debug.h
drivers/usb/host/usb-uhci-debug.h
+0
-141
drivers/usb/host/usb-uhci.c
drivers/usb/host/usb-uhci.c
+0
-3095
drivers/usb/host/usb-uhci.h
drivers/usb/host/usb-uhci.h
+0
-307
No files found.
drivers/usb/host/Makefile
View file @
873077ea
...
@@ -10,7 +10,6 @@ obj-$(CONFIG_USB_OHCI_HCD) += ohci-hcd.o
...
@@ -10,7 +10,6 @@ obj-$(CONFIG_USB_OHCI_HCD) += ohci-hcd.o
obj-$(CONFIG_USB_UHCI_HCD)
+=
usb-uhci-hcd.o
obj-$(CONFIG_USB_UHCI_HCD)
+=
usb-uhci-hcd.o
obj-$(CONFIG_USB_UHCI_HCD_ALT)
+=
uhci-hcd.o
obj-$(CONFIG_USB_UHCI_HCD_ALT)
+=
uhci-hcd.o
obj-$(CONFIG_USB_UHCI)
+=
usb-uhci.o
obj-$(CONFIG_USB_OHCI)
+=
usb-ohci.o usb-ohci-pci.o
obj-$(CONFIG_USB_OHCI)
+=
usb-ohci.o usb-ohci-pci.o
obj-$(CONFIG_USB_OHCI_SA1111)
+=
usb-ohci.o usb-ohci-sa1111.o
obj-$(CONFIG_USB_OHCI_SA1111)
+=
usb-ohci.o usb-ohci-sa1111.o
obj-$(CONFIG_USB_SL811HS)
+=
hc_sl811.o
obj-$(CONFIG_USB_SL811HS)
+=
hc_sl811.o
...
...
drivers/usb/host/uhci.h
deleted
100644 → 0
View file @
c11abe19
This diff is collapsed.
Click to expand it.
drivers/usb/host/usb-uhci-debug.h
deleted
100644 → 0
View file @
c11abe19
#ifdef DEBUG
static
void
__attribute__
((
__unused__
))
uhci_show_qh
(
puhci_desc_t
qh
)
{
if
(
qh
->
type
!=
QH_TYPE
)
{
dbg
(
"qh has not QH_TYPE"
);
return
;
}
dbg
(
"QH @ %p/%08llX:"
,
qh
,
(
unsigned
long
long
)
qh
->
dma_addr
);
if
(
qh
->
hw
.
qh
.
head
&
UHCI_PTR_TERM
)
dbg
(
" Head Terminate"
);
else
dbg
(
" Head: %s @ %08X"
,
(
qh
->
hw
.
qh
.
head
&
UHCI_PTR_QH
?
"QH"
:
"TD"
),
qh
->
hw
.
qh
.
head
&
~
UHCI_PTR_BITS
);
if
(
qh
->
hw
.
qh
.
element
&
UHCI_PTR_TERM
)
dbg
(
" Element Terminate"
);
else
dbg
(
" Element: %s @ %08X"
,
(
qh
->
hw
.
qh
.
element
&
UHCI_PTR_QH
?
"QH"
:
"TD"
),
qh
->
hw
.
qh
.
element
&
~
UHCI_PTR_BITS
);
}
#endif
#if 0
static void uhci_show_td (puhci_desc_t td)
{
char *spid;
switch (td->hw.td.info & 0xff) {
case USB_PID_SETUP:
spid = "SETUP";
break;
case USB_PID_OUT:
spid = " OUT ";
break;
case USB_PID_IN:
spid = " IN ";
break;
default:
spid = " ? ";
break;
}
warn(" TD @ %p/%08X, MaxLen=%02x DT%d EP=%x Dev=%x PID=(%s) buf=%08x",
td, td->dma_addr,
td->hw.td.info >> 21,
((td->hw.td.info >> 19) & 1),
(td->hw.td.info >> 15) & 15,
(td->hw.td.info >> 8) & 127,
spid,
td->hw.td.buffer);
warn(" Len=%02x e%d %s%s%s%s%s%s%s%s%s%s",
td->hw.td.status & 0x7ff,
((td->hw.td.status >> 27) & 3),
(td->hw.td.status & TD_CTRL_SPD) ? "SPD " : "",
(td->hw.td.status & TD_CTRL_LS) ? "LS " : "",
(td->hw.td.status & TD_CTRL_IOC) ? "IOC " : "",
(td->hw.td.status & TD_CTRL_ACTIVE) ? "Active " : "",
(td->hw.td.status & TD_CTRL_STALLED) ? "Stalled " : "",
(td->hw.td.status & TD_CTRL_DBUFERR) ? "DataBufErr " : "",
(td->hw.td.status & TD_CTRL_BABBLE) ? "Babble " : "",
(td->hw.td.status & TD_CTRL_NAK) ? "NAK " : "",
(td->hw.td.status & TD_CTRL_CRCTIMEO) ? "CRC/Timeo " : "",
(td->hw.td.status & TD_CTRL_BITSTUFF) ? "BitStuff " : ""
);
if (td->hw.td.link & UHCI_PTR_TERM)
warn(" TD Link Terminate");
else
warn(" Link points to %s @ %08x, %s",
(td->hw.td.link & UHCI_PTR_QH?"QH":"TD"),
td->hw.td.link & ~UHCI_PTR_BITS,
(td->hw.td.link & UHCI_PTR_DEPTH ? "Depth first" : "Breadth first"));
}
#endif
#ifdef DEBUG
static
void
__attribute__
((
__unused__
))
uhci_show_sc
(
int
port
,
unsigned
short
status
)
{
dbg
(
" stat%d = %04x %s%s%s%s%s%s%s%s"
,
port
,
status
,
(
status
&
USBPORTSC_SUSP
)
?
"PortSuspend "
:
""
,
(
status
&
USBPORTSC_PR
)
?
"PortReset "
:
""
,
(
status
&
USBPORTSC_LSDA
)
?
"LowSpeed "
:
""
,
(
status
&
USBPORTSC_RD
)
?
"ResumeDetect "
:
""
,
(
status
&
USBPORTSC_PEC
)
?
"EnableChange "
:
""
,
(
status
&
USBPORTSC_PE
)
?
"PortEnabled "
:
""
,
(
status
&
USBPORTSC_CSC
)
?
"ConnectChange "
:
""
,
(
status
&
USBPORTSC_CCS
)
?
"PortConnected "
:
""
);
}
void
uhci_show_status
(
puhci_t
s
)
{
unsigned
int
io_addr
=
s
->
io_addr
;
unsigned
short
usbcmd
,
usbstat
,
usbint
,
usbfrnum
;
unsigned
int
flbaseadd
;
unsigned
char
sof
;
unsigned
short
portsc1
,
portsc2
;
usbcmd
=
inw
(
io_addr
+
0
);
usbstat
=
inw
(
io_addr
+
2
);
usbint
=
inw
(
io_addr
+
4
);
usbfrnum
=
inw
(
io_addr
+
6
);
flbaseadd
=
inl
(
io_addr
+
8
);
sof
=
inb
(
io_addr
+
12
);
portsc1
=
inw
(
io_addr
+
16
);
portsc2
=
inw
(
io_addr
+
18
);
dbg
(
" usbcmd = %04x %s%s%s%s%s%s%s%s"
,
usbcmd
,
(
usbcmd
&
USBCMD_MAXP
)
?
"Maxp64 "
:
"Maxp32 "
,
(
usbcmd
&
USBCMD_CF
)
?
"CF "
:
""
,
(
usbcmd
&
USBCMD_SWDBG
)
?
"SWDBG "
:
""
,
(
usbcmd
&
USBCMD_FGR
)
?
"FGR "
:
""
,
(
usbcmd
&
USBCMD_EGSM
)
?
"EGSM "
:
""
,
(
usbcmd
&
USBCMD_GRESET
)
?
"GRESET "
:
""
,
(
usbcmd
&
USBCMD_HCRESET
)
?
"HCRESET "
:
""
,
(
usbcmd
&
USBCMD_RS
)
?
"RS "
:
""
);
dbg
(
" usbstat = %04x %s%s%s%s%s%s"
,
usbstat
,
(
usbstat
&
USBSTS_HCH
)
?
"HCHalted "
:
""
,
(
usbstat
&
USBSTS_HCPE
)
?
"HostControllerProcessError "
:
""
,
(
usbstat
&
USBSTS_HSE
)
?
"HostSystemError "
:
""
,
(
usbstat
&
USBSTS_RD
)
?
"ResumeDetect "
:
""
,
(
usbstat
&
USBSTS_ERROR
)
?
"USBError "
:
""
,
(
usbstat
&
USBSTS_USBINT
)
?
"USBINT "
:
""
);
dbg
(
" usbint = %04x"
,
usbint
);
dbg
(
" usbfrnum = (%d)%03x"
,
(
usbfrnum
>>
10
)
&
1
,
0xfff
&
(
4
*
(
unsigned
int
)
usbfrnum
));
dbg
(
" flbaseadd = %08x"
,
flbaseadd
);
dbg
(
" sof = %02x"
,
sof
);
uhci_show_sc
(
1
,
portsc1
);
uhci_show_sc
(
2
,
portsc2
);
}
#endif
drivers/usb/host/usb-uhci.c
deleted
100644 → 0
View file @
c11abe19
This diff is collapsed.
Click to expand it.
drivers/usb/host/usb-uhci.h
deleted
100644 → 0
View file @
c11abe19
#ifndef __LINUX_UHCI_H
#define __LINUX_UHCI_H
/*
$Id: usb-uhci.h,v 1.58 2001/08/28 16:45:00 acher Exp $
*/
#define MODNAME "usb-uhci"
#define UHCI_LATENCY_TIMER 0
static
__inline__
void
uhci_wait_ms
(
unsigned
int
ms
)
{
if
(
!
in_interrupt
())
{
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
1
+
ms
*
HZ
/
1000
);
}
else
mdelay
(
ms
);
}
/* Command register */
#define USBCMD 0
#define USBCMD_RS 0x0001
/* Run/Stop */
#define USBCMD_HCRESET 0x0002
/* Host reset */
#define USBCMD_GRESET 0x0004
/* Global reset */
#define USBCMD_EGSM 0x0008
/* Global Suspend Mode */
#define USBCMD_FGR 0x0010
/* Force Global Resume */
#define USBCMD_SWDBG 0x0020
/* SW Debug mode */
#define USBCMD_CF 0x0040
/* Config Flag (sw only) */
#define USBCMD_MAXP 0x0080
/* Max Packet (0 = 32, 1 = 64) */
/* Status register */
#define USBSTS 2
#define USBSTS_USBINT 0x0001
/* Interrupt due to IOC */
#define USBSTS_ERROR 0x0002
/* Interrupt due to error */
#define USBSTS_RD 0x0004
/* Resume Detect */
#define USBSTS_HSE 0x0008
/* Host System Error - basically PCI problems */
#define USBSTS_HCPE 0x0010
/* Host Controller Process Error - the scripts were buggy */
#define USBSTS_HCH 0x0020
/* HC Halted */
/* Interrupt enable register */
#define USBINTR 4
#define USBINTR_TIMEOUT 0x0001
/* Timeout/CRC error enable */
#define USBINTR_RESUME 0x0002
/* Resume interrupt enable */
#define USBINTR_IOC 0x0004
/* Interrupt On Complete enable */
#define USBINTR_SP 0x0008
/* Short packet interrupt enable */
#define USBFRNUM 6
#define USBFLBASEADD 8
#define USBSOF 12
/* USB port status and control registers */
#define USBPORTSC1 16
#define USBPORTSC2 18
#define USBPORTSC_CCS 0x0001
/* Current Connect Status ("device present") */
#define USBPORTSC_CSC 0x0002
/* Connect Status Change */
#define USBPORTSC_PE 0x0004
/* Port Enable */
#define USBPORTSC_PEC 0x0008
/* Port Enable Change */
#define USBPORTSC_LS 0x0030
/* Line Status */
#define USBPORTSC_RD 0x0040
/* Resume Detect */
#define USBPORTSC_LSDA 0x0100
/* Low Speed Device Attached */
#define USBPORTSC_PR 0x0200
/* Port Reset */
#define USBPORTSC_SUSP 0x1000
/* Suspend */
/* Legacy support register */
#define USBLEGSUP 0xc0
#define USBLEGSUP_DEFAULT 0x2000
/* only PIRQ enable set */
#define UHCI_NULL_DATA_SIZE 0x7ff
/* for UHCI controller TD */
#define UHCI_PID 0xff
/* PID MASK */
#define UHCI_PTR_BITS 0x000F
#define UHCI_PTR_TERM 0x0001
#define UHCI_PTR_QH 0x0002
#define UHCI_PTR_DEPTH 0x0004
#define UHCI_NUMFRAMES 1024
/* in the frame list [array] */
#define UHCI_MAX_SOF_NUMBER 2047
/* in an SOF packet */
#define CAN_SCHEDULE_FRAMES 1000
/* how far future frames can be scheduled */
/*
* for TD <status>:
*/
#define TD_CTRL_SPD (1 << 29)
/* Short Packet Detect */
#define TD_CTRL_C_ERR_MASK (3 << 27)
/* Error Counter bits */
#define TD_CTRL_LS (1 << 26)
/* Low Speed Device */
#define TD_CTRL_IOS (1 << 25)
/* Isochronous Select */
#define TD_CTRL_IOC (1 << 24)
/* Interrupt on Complete */
#define TD_CTRL_ACTIVE (1 << 23)
/* TD Active */
#define TD_CTRL_STALLED (1 << 22)
/* TD Stalled */
#define TD_CTRL_DBUFERR (1 << 21)
/* Data Buffer Error */
#define TD_CTRL_BABBLE (1 << 20)
/* Babble Detected */
#define TD_CTRL_NAK (1 << 19)
/* NAK Received */
#define TD_CTRL_CRCTIMEO (1 << 18)
/* CRC/Time Out Error */
#define TD_CTRL_BITSTUFF (1 << 17)
/* Bit Stuff Error */
#define TD_CTRL_ACTLEN_MASK 0x7ff
/* actual length, encoded as n - 1 */
#define TD_CTRL_ANY_ERROR (TD_CTRL_STALLED | TD_CTRL_DBUFERR | \
TD_CTRL_BABBLE | TD_CTRL_CRCTIME | TD_CTRL_BITSTUFF)
#define uhci_status_bits(ctrl_sts) (ctrl_sts & 0xFE0000)
#define uhci_actual_length(ctrl_sts) ((ctrl_sts + 1) & TD_CTRL_ACTLEN_MASK)
/* 1-based */
/*
* for TD <flags>:
*/
#define UHCI_TD_REMOVE 0x0001
/* Remove when done */
/*
* for TD <info>: (a.k.a. Token)
*/
#define TD_TOKEN_TOGGLE 19
#define uhci_maxlen(token) ((token) >> 21)
#define uhci_toggle(token) (((token) >> TD_TOKEN_TOGGLE) & 1)
#define uhci_endpoint(token) (((token) >> 15) & 0xf)
#define uhci_devaddr(token) (((token) >> 8) & 0x7f)
#define uhci_devep(token) (((token) >> 8) & 0x7ff)
#define uhci_packetid(token) ((token) & 0xff)
#define uhci_packetout(token) (uhci_packetid(token) != USB_PID_IN)
#define uhci_packetin(token) (uhci_packetid(token) == USB_PID_IN)
/* ------------------------------------------------------------------------------------
New TD/QH-structures
------------------------------------------------------------------------------------ */
typedef
enum
{
TD_TYPE
,
QH_TYPE
}
uhci_desc_type_t
;
typedef
struct
{
__u32
link
;
__u32
status
;
__u32
info
;
__u32
buffer
;
}
uhci_td_t
,
*
puhci_td_t
;
typedef
struct
{
__u32
head
;
__u32
element
;
/* Queue element pointer */
}
uhci_qh_t
,
*
puhci_qh_t
;
typedef
struct
{
union
{
uhci_td_t
td
;
uhci_qh_t
qh
;
}
hw
;
uhci_desc_type_t
type
;
dma_addr_t
dma_addr
;
struct
list_head
horizontal
;
struct
list_head
vertical
;
struct
list_head
desc_list
;
int
last_used
;
}
uhci_desc_t
,
*
puhci_desc_t
;
typedef
struct
{
struct
list_head
desc_list
;
// list pointer to all corresponding TDs/QHs associated with this request
dma_addr_t
setup_packet_dma
;
dma_addr_t
transfer_buffer_dma
;
unsigned
long
started
;
struct
urb
*
next_queued_urb
;
// next queued urb for this EP
struct
urb
*
prev_queued_urb
;
uhci_desc_t
*
bottom_qh
;
uhci_desc_t
*
next_qh
;
// next helper QH
char
use_loop
;
char
flags
;
}
urb_priv_t
,
*
purb_priv_t
;
struct
virt_root_hub
{
int
devnum
;
/* Address of Root Hub endpoint */
void
*
urb
;
void
*
int_addr
;
int
send
;
int
interval
;
int
numports
;
int
c_p_r
[
8
];
struct
timer_list
rh_int_timer
;
};
typedef
struct
uhci
{
int
irq
;
unsigned
int
io_addr
;
unsigned
int
io_size
;
unsigned
int
maxports
;
int
running
;
int
apm_state
;
struct
uhci
*
next
;
// chain of uhci device contexts
struct
list_head
urb_list
;
// list of all pending urbs
spinlock_t
urb_list_lock
;
// lock to keep consistency
int
unlink_urb_done
;
atomic_t
avoid_bulk
;
struct
usb_bus
*
bus
;
// our bus
__u32
*
framelist
;
dma_addr_t
framelist_dma
;
uhci_desc_t
**
iso_td
;
uhci_desc_t
*
int_chain
[
8
];
uhci_desc_t
*
ls_control_chain
;
uhci_desc_t
*
control_chain
;
uhci_desc_t
*
bulk_chain
;
uhci_desc_t
*
chain_end
;
uhci_desc_t
*
td1ms
;
uhci_desc_t
*
td32ms
;
struct
list_head
free_desc
;
spinlock_t
qh_lock
;
spinlock_t
td_lock
;
struct
virt_root_hub
rh
;
//private data of the virtual root hub
int
loop_usage
;
// URBs using bandwidth reclamation
struct
list_head
urb_unlinked
;
// list of all unlinked urbs
long
timeout_check
;
int
timeout_urbs
;
struct
pci_dev
*
uhci_pci
;
struct
pci_pool
*
desc_pool
;
long
last_error_time
;
// last error output in uhci_interrupt()
}
uhci_t
,
*
puhci_t
;
#define MAKE_TD_ADDR(a) ((a)->dma_addr&~UHCI_PTR_QH)
#define MAKE_QH_ADDR(a) ((a)->dma_addr|UHCI_PTR_QH)
#define UHCI_GET_CURRENT_FRAME(uhci) (inw ((uhci)->io_addr + USBFRNUM))
#define CLEAN_TRANSFER_NO_DELETION 0
#define CLEAN_TRANSFER_REGULAR 1
#define CLEAN_TRANSFER_DELETION_MARK 2
#define CLEAN_NOT_FORCED 0
#define CLEAN_FORCED 1
#define PROCESS_ISO_REGULAR 0
#define PROCESS_ISO_FORCE 1
#define UNLINK_ASYNC_STORE_URB 0
#define UNLINK_ASYNC_DONT_STORE 1
#define is_td_active(desc) (desc->hw.td.status & cpu_to_le32(TD_CTRL_ACTIVE))
#define set_qh_head(desc,val) (desc)->hw.qh.head=cpu_to_le32(val)
#define set_qh_element(desc,val) (desc)->hw.qh.element=cpu_to_le32(val)
#define set_td_link(desc,val) (desc)->hw.td.link=cpu_to_le32(val)
#define set_td_ioc(desc) (desc)->hw.td.status |= cpu_to_le32(TD_CTRL_IOC)
#define clr_td_ioc(desc) (desc)->hw.td.status &= cpu_to_le32(~TD_CTRL_IOC)
/* ------------------------------------------------------------------------------------
Virtual Root HUB
------------------------------------------------------------------------------------ */
/* destination of request */
#define RH_INTERFACE 0x01
#define RH_ENDPOINT 0x02
#define RH_OTHER 0x03
#define RH_CLASS 0x20
#define RH_VENDOR 0x40
/* Requests: bRequest << 8 | bmRequestType */
#define RH_GET_STATUS 0x0080
#define RH_CLEAR_FEATURE 0x0100
#define RH_SET_FEATURE 0x0300
#define RH_SET_ADDRESS 0x0500
#define RH_GET_DESCRIPTOR 0x0680
#define RH_SET_DESCRIPTOR 0x0700
#define RH_GET_CONFIGURATION 0x0880
#define RH_SET_CONFIGURATION 0x0900
#define RH_GET_STATE 0x0280
#define RH_GET_INTERFACE 0x0A80
#define RH_SET_INTERFACE 0x0B00
#define RH_SYNC_FRAME 0x0C80
/* Our Vendor Specific Request */
#define RH_SET_EP 0x2000
/* Hub port features */
#define RH_PORT_CONNECTION 0x00
#define RH_PORT_ENABLE 0x01
#define RH_PORT_SUSPEND 0x02
#define RH_PORT_OVER_CURRENT 0x03
#define RH_PORT_RESET 0x04
#define RH_PORT_POWER 0x08
#define RH_PORT_LOW_SPEED 0x09
#define RH_C_PORT_CONNECTION 0x10
#define RH_C_PORT_ENABLE 0x11
#define RH_C_PORT_SUSPEND 0x12
#define RH_C_PORT_OVER_CURRENT 0x13
#define RH_C_PORT_RESET 0x14
/* Hub features */
#define RH_C_HUB_LOCAL_POWER 0x00
#define RH_C_HUB_OVER_CURRENT 0x01
#define RH_DEVICE_REMOTE_WAKEUP 0x00
#define RH_ENDPOINT_STALL 0x01
/* Our Vendor Specific feature */
#define RH_REMOVE_EP 0x00
#define RH_ACK 0x01
#define RH_REQ_ERR -1
#define RH_NACK 0x00
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment