// SPDX-License-Identifier: GPL-2.0 /* * Universal Host Controller Interface driver for USB. * * Maintainer: Alan Stern <[email protected]> * * (C) Copyright 1999 Linus Torvalds * (C) Copyright 1999-2002 Johannes Erdfelt, [email protected] * (C) Copyright 1999 Randy Dunlap * (C) Copyright 1999 Georg Acher, [email protected] * (C) Copyright 1999 Deti Fliegl, [email protected] * (C) Copyright 1999 Thomas Sailer, [email protected] * (C) Copyright 2004 Alan Stern, [email protected] */ static const __u8 root_hub_hub_des[] = …; #define UHCI_RH_MAXCHILD … /* must write as zeroes */ #define WZ_BITS … /* status change bits: nonzero writes will clear */ #define RWC_BITS … /* suspend/resume bits: port suspended or port resuming */ #define SUSPEND_BITS … /* A port that either is connected or has a changed-bit set will prevent * us from AUTO_STOPPING. */ static int any_ports_active(struct uhci_hcd *uhci) { … } static inline int get_hub_status_data(struct uhci_hcd *uhci, char *buf) { … } #define CLR_RH_PORTSTAT(x) … #define SET_RH_PORTSTAT(x) … /* UHCI controllers don't automatically stop resume signalling after 20 msec, * so we have to poll and check timeouts in order to take care of it. */ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port, unsigned long port_addr) { … } /* Wait for the UHCI controller in HP's iLO2 server management chip. * It can take up to 250 us to finish a reset and set the CSC bit. */ static void wait_for_HP(struct uhci_hcd *uhci, unsigned long port_addr) { … } static void uhci_check_ports(struct uhci_hcd *uhci) { … } static int uhci_hub_status_data(struct usb_hcd *hcd, char *buf) { … } /* size of returned buffer is part of USB spec */ static int uhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex, char *buf, u16 wLength) { … }