|
@@ -40,13 +40,22 @@ static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq,
|
|
|
struct gpio_descs *reset_gpios = pwrseq->reset_gpios;
|
|
|
|
|
|
if (!IS_ERR(reset_gpios)) {
|
|
|
- DECLARE_BITMAP(values, BITS_PER_TYPE(value));
|
|
|
+ unsigned long *values;
|
|
|
int nvalues = reset_gpios->ndescs;
|
|
|
|
|
|
- values[0] = value;
|
|
|
+ values = bitmap_alloc(nvalues, GFP_KERNEL);
|
|
|
+ if (!values)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (value)
|
|
|
+ bitmap_fill(values, nvalues);
|
|
|
+ else
|
|
|
+ bitmap_zero(values, nvalues);
|
|
|
|
|
|
gpiod_set_array_value_cansleep(nvalues, reset_gpios->desc,
|
|
|
reset_gpios->info, values);
|
|
|
+
|
|
|
+ kfree(values);
|
|
|
}
|
|
|
}
|
|
|
|