Skip to content

Commit

Permalink
staging: dwc2: Make dwc2_set_uninitialized more specific
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthijs Kooijman authored and Greg Kroah-Hartman committed Apr 11, 2013
1 parent 050232a commit 8284f93
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
4 changes: 4 additions & 0 deletions drivers/staging/dwc2/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,10 @@ enum dwc2_lx_state {
* parameters define how the DWC_otg controller should be configured.
*/
struct dwc2_core_params {
/*
* Don't add any non-int members here, this will break
* dwc2_set_all_params!
*/
int otg_cap;
int otg_ver;
int dma_enable;
Expand Down
12 changes: 9 additions & 3 deletions drivers/staging/dwc2/hcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2679,8 +2679,15 @@ static void dwc2_hcd_release(struct dwc2_hsotg *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;

for (i = 0; i < size; i++)
Expand Down Expand Up @@ -2789,8 +2796,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
if (!hsotg->core_params)
goto error1;

dwc2_set_uninitialized((int *)hsotg->core_params,
sizeof(*hsotg->core_params) / sizeof(int));
dwc2_set_all_params(hsotg->core_params, -1);

/* Validate parameter values */
dwc2_set_parameters(hsotg, params);
Expand Down
1 change: 1 addition & 0 deletions drivers/staging/dwc2/hcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 int dwc2_set_parameters(struct dwc2_hsotg *hsotg,
struct dwc2_core_params *params);
extern void dwc2_set_all_params(struct dwc2_core_params *params, int value);

/* Transaction Execution Functions */
extern enum dwc2_transaction_type dwc2_hcd_select_transactions(
Expand Down

0 comments on commit 8284f93

Please sign in to comment.