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@xxxxxxxx> --- drivers/staging/dwc2/core.h | 2 ++ drivers/staging/dwc2/hcd.c | 12 +++++++++--- drivers/staging/dwc2/hcd.h | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/staging/dwc2/core.h b/drivers/staging/dwc2/core.h index e9acbf1..a60de0f 100644 --- a/drivers/staging/dwc2/core.h +++ b/drivers/staging/dwc2/core.h @@ -193,6 +193,8 @@ enum dwc2_lx_state { * default described above. */ 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; diff --git a/drivers/staging/dwc2/hcd.c b/drivers/staging/dwc2/hcd.c index 409e5e5..747e787 100644 --- a/drivers/staging/dwc2/hcd.c +++ b/drivers/staging/dwc2/hcd.c @@ -2673,8 +2673,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++) @@ -2726,8 +2733,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); diff --git a/drivers/staging/dwc2/hcd.h b/drivers/staging/dwc2/hcd.h index 5d90f4c..8b648e7 100644 --- a/drivers/staging/dwc2/hcd.h +++ b/drivers/staging/dwc2/hcd.h @@ -453,6 +453,7 @@ extern void dwc2_hcd_remove(struct dwc2_hsotg *hsotg); extern int dwc2_set_parameters(struct dwc2_hsotg *hsotg, const struct dwc2_core_params *params); extern int dwc2_get_hwparams(struct dwc2_hsotg *hsotg); +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( -- 1.8.0 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html