usb: chipidea: move malloced regmap directly into struct hw_bank
Without this patch a seperate chunk of memory is allocated for the regmap array. As the regmap is always used it makes no sense to allocate a seperate memory block for it, this patch moves the regmap array directly into the struct hw_bank. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2627cb0812
commit
21395a1aac
@ -25,6 +25,35 @@
|
|||||||
#define CI_HDRC_PAGE_SIZE 4096ul /* page size for TD's */
|
#define CI_HDRC_PAGE_SIZE 4096ul /* page size for TD's */
|
||||||
#define ENDPT_MAX 32
|
#define ENDPT_MAX 32
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* REGISTERS
|
||||||
|
*****************************************************************************/
|
||||||
|
/* register indices */
|
||||||
|
enum ci_hw_regs {
|
||||||
|
CAP_CAPLENGTH,
|
||||||
|
CAP_HCCPARAMS,
|
||||||
|
CAP_DCCPARAMS,
|
||||||
|
CAP_TESTMODE,
|
||||||
|
CAP_LAST = CAP_TESTMODE,
|
||||||
|
OP_USBCMD,
|
||||||
|
OP_USBSTS,
|
||||||
|
OP_USBINTR,
|
||||||
|
OP_DEVICEADDR,
|
||||||
|
OP_ENDPTLISTADDR,
|
||||||
|
OP_PORTSC,
|
||||||
|
OP_DEVLC,
|
||||||
|
OP_OTGSC,
|
||||||
|
OP_USBMODE,
|
||||||
|
OP_ENDPTSETUPSTAT,
|
||||||
|
OP_ENDPTPRIME,
|
||||||
|
OP_ENDPTFLUSH,
|
||||||
|
OP_ENDPTSTAT,
|
||||||
|
OP_ENDPTCOMPLETE,
|
||||||
|
OP_ENDPTCTRL,
|
||||||
|
/* endptctrl1..15 follow */
|
||||||
|
OP_LAST = OP_ENDPTCTRL + ENDPT_MAX / 2,
|
||||||
|
};
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* STRUCTURES
|
* STRUCTURES
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
@ -98,7 +127,7 @@ struct hw_bank {
|
|||||||
void __iomem *cap;
|
void __iomem *cap;
|
||||||
void __iomem *op;
|
void __iomem *op;
|
||||||
size_t size;
|
size_t size;
|
||||||
void __iomem **regmap;
|
void __iomem *regmap[OP_LAST + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -209,38 +238,6 @@ static inline void ci_role_stop(struct ci_hdrc *ci)
|
|||||||
ci->roles[role]->stop(ci);
|
ci->roles[role]->stop(ci);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* REGISTERS
|
|
||||||
*****************************************************************************/
|
|
||||||
/* register size */
|
|
||||||
#define REG_BITS (32)
|
|
||||||
|
|
||||||
/* register indices */
|
|
||||||
enum ci_hw_regs {
|
|
||||||
CAP_CAPLENGTH,
|
|
||||||
CAP_HCCPARAMS,
|
|
||||||
CAP_DCCPARAMS,
|
|
||||||
CAP_TESTMODE,
|
|
||||||
CAP_LAST = CAP_TESTMODE,
|
|
||||||
OP_USBCMD,
|
|
||||||
OP_USBSTS,
|
|
||||||
OP_USBINTR,
|
|
||||||
OP_DEVICEADDR,
|
|
||||||
OP_ENDPTLISTADDR,
|
|
||||||
OP_PORTSC,
|
|
||||||
OP_DEVLC,
|
|
||||||
OP_OTGSC,
|
|
||||||
OP_USBMODE,
|
|
||||||
OP_ENDPTSETUPSTAT,
|
|
||||||
OP_ENDPTPRIME,
|
|
||||||
OP_ENDPTFLUSH,
|
|
||||||
OP_ENDPTSTAT,
|
|
||||||
OP_ENDPTCOMPLETE,
|
|
||||||
OP_ENDPTCTRL,
|
|
||||||
/* endptctrl1..15 follow */
|
|
||||||
OP_LAST = OP_ENDPTCTRL + ENDPT_MAX / 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hw_read: reads from a hw register
|
* hw_read: reads from a hw register
|
||||||
* @reg: register index
|
* @reg: register index
|
||||||
|
@ -123,13 +123,6 @@ static int hw_alloc_regmap(struct ci_hdrc *ci, bool is_lpm)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
kfree(ci->hw_bank.regmap);
|
|
||||||
|
|
||||||
ci->hw_bank.regmap = kzalloc((OP_LAST + 1) * sizeof(void *),
|
|
||||||
GFP_KERNEL);
|
|
||||||
if (!ci->hw_bank.regmap)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
for (i = 0; i < OP_ENDPTCTRL; i++)
|
for (i = 0; i < OP_ENDPTCTRL; i++)
|
||||||
ci->hw_bank.regmap[i] =
|
ci->hw_bank.regmap[i] =
|
||||||
(i <= CAP_LAST ? ci->hw_bank.cap : ci->hw_bank.op) +
|
(i <= CAP_LAST ? ci->hw_bank.cap : ci->hw_bank.op) +
|
||||||
@ -681,7 +674,6 @@ static int ci_hdrc_remove(struct platform_device *pdev)
|
|||||||
ci_role_destroy(ci);
|
ci_role_destroy(ci);
|
||||||
ci_hdrc_enter_lpm(ci, true);
|
ci_hdrc_enter_lpm(ci, true);
|
||||||
ci_usb_phy_destroy(ci);
|
ci_usb_phy_destroy(ci);
|
||||||
kfree(ci->hw_bank.regmap);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user