staging: dwc2: Make dwc2_set_uninitialized more specific
Before, it was a function that would set all members of a given struct containing only int members to -1. Now, it is renamed to dwc_set_all_params and it works only on the dwc2_core_params struct. This makes sure that all of the slightly dubious casting and assumptions happen inside the function instead of by the caller. Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl> Acked-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
050232a73c
commit
8284f93b3d
|
@ -162,6 +162,10 @@ enum dwc2_lx_state {
|
||||||
* parameters define how the DWC_otg controller should be configured.
|
* parameters define how the DWC_otg controller should be configured.
|
||||||
*/
|
*/
|
||||||
struct dwc2_core_params {
|
struct dwc2_core_params {
|
||||||
|
/*
|
||||||
|
* Don't add any non-int members here, this will break
|
||||||
|
* dwc2_set_all_params!
|
||||||
|
*/
|
||||||
int otg_cap;
|
int otg_cap;
|
||||||
int otg_ver;
|
int otg_ver;
|
||||||
int dma_enable;
|
int dma_enable;
|
||||||
|
|
|
@ -2679,8 +2679,15 @@ static void dwc2_hcd_release(struct dwc2_hsotg *hsotg)
|
||||||
dwc2_hcd_free(hsotg);
|
dwc2_hcd_free(hsotg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dwc2_set_uninitialized(int *p, int size)
|
/*
|
||||||
|
* Sets all parameters to the given value.
|
||||||
|
*
|
||||||
|
* Assumes that the dwc2_core_params struct contains only integers.
|
||||||
|
*/
|
||||||
|
void dwc2_set_all_params(struct dwc2_core_params *params, int value)
|
||||||
{
|
{
|
||||||
|
int *p = (int *)params;
|
||||||
|
size_t size = sizeof(*params) / sizeof(*p);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < size; i++)
|
for (i = 0; i < size; i++)
|
||||||
|
@ -2789,8 +2796,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
|
||||||
if (!hsotg->core_params)
|
if (!hsotg->core_params)
|
||||||
goto error1;
|
goto error1;
|
||||||
|
|
||||||
dwc2_set_uninitialized((int *)hsotg->core_params,
|
dwc2_set_all_params(hsotg->core_params, -1);
|
||||||
sizeof(*hsotg->core_params) / sizeof(int));
|
|
||||||
|
|
||||||
/* Validate parameter values */
|
/* Validate parameter values */
|
||||||
dwc2_set_parameters(hsotg, params);
|
dwc2_set_parameters(hsotg, params);
|
||||||
|
|
|
@ -452,6 +452,7 @@ extern int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
|
||||||
extern void dwc2_hcd_remove(struct dwc2_hsotg *hsotg);
|
extern void dwc2_hcd_remove(struct dwc2_hsotg *hsotg);
|
||||||
extern int dwc2_set_parameters(struct dwc2_hsotg *hsotg,
|
extern int dwc2_set_parameters(struct dwc2_hsotg *hsotg,
|
||||||
struct dwc2_core_params *params);
|
struct dwc2_core_params *params);
|
||||||
|
extern void dwc2_set_all_params(struct dwc2_core_params *params, int value);
|
||||||
|
|
||||||
/* Transaction Execution Functions */
|
/* Transaction Execution Functions */
|
||||||
extern enum dwc2_transaction_type dwc2_hcd_select_transactions(
|
extern enum dwc2_transaction_type dwc2_hcd_select_transactions(
|
||||||
|
|
Loading…
Reference in a new issue