usb: ehci: Get rid of CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS

EHC reports supported maximum number of ports in the HCSPARAMS
register, so it's unnecessary to use a hardcoded config option
CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Bin Meng 2017-07-19 21:50:05 +08:00 committed by Marek Vasut
parent 2931342874
commit 99c2255688
2 changed files with 10 additions and 7 deletions

View File

@ -148,9 +148,12 @@ static void ehci_powerup_fixup(struct ehci_ctrl *ctrl, uint32_t *status_reg,
static uint32_t *ehci_get_portsc_register(struct ehci_ctrl *ctrl, int port) static uint32_t *ehci_get_portsc_register(struct ehci_ctrl *ctrl, int port)
{ {
if (port < 0 || port >= CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS) { int max_ports = HCS_N_PORTS(ehci_readl(&ctrl->hccr->cr_hcsparams));
if (port < 0 || port >= max_ports) {
/* Printing the message would cause a scan failure! */ /* Printing the message would cause a scan failure! */
debug("The request port(%u) is not configured\n", port); debug("The request port(%u) exceeds maximum port number\n",
port);
return NULL; return NULL;
} }
@ -205,6 +208,7 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
{ {
int i, ret = 0; int i, ret = 0;
uint32_t cmd, reg; uint32_t cmd, reg;
int max_ports = HCS_N_PORTS(ehci_readl(&ctrl->hccr->cr_hcsparams));
if (!ctrl || !ctrl->hcor) if (!ctrl || !ctrl->hcor)
return -EINVAL; return -EINVAL;
@ -219,7 +223,7 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
100 * 1000); 100 * 1000);
if (!ret) { if (!ret) {
for (i = 0; i < CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS; i++) { for (i = 0; i < max_ports; i++) {
reg = ehci_readl(&ctrl->hcor->or_portsc[i]); reg = ehci_readl(&ctrl->hcor->or_portsc[i]);
reg |= EHCI_PS_SUSP; reg |= EHCI_PS_SUSP;
ehci_writel(&ctrl->hcor->or_portsc[i], reg); ehci_writel(&ctrl->hcor->or_portsc[i], reg);

View File

@ -11,9 +11,8 @@
#include <usb.h> #include <usb.h>
#if !defined(CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS) /* Section 2.2.3 - N_PORTS */
#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 2 #define MAX_HC_PORTS 15
#endif
/* /*
* Register Space. * Register Space.
@ -62,7 +61,7 @@ struct ehci_hcor {
uint32_t _reserved_1_[6]; uint32_t _reserved_1_[6];
uint32_t or_configflag; uint32_t or_configflag;
#define FLAG_CF (1 << 0) /* true: we'll support "high speed" */ #define FLAG_CF (1 << 0) /* true: we'll support "high speed" */
uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS]; uint32_t or_portsc[MAX_HC_PORTS];
#define PORTSC_PSPD(x) (((x) >> 26) & 0x3) #define PORTSC_PSPD(x) (((x) >> 26) & 0x3)
#define PORTSC_PSPD_FS 0x0 #define PORTSC_PSPD_FS 0x0
#define PORTSC_PSPD_LS 0x1 #define PORTSC_PSPD_LS 0x1