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:
parent
2931342874
commit
99c2255688
@ -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);
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user