diff options
Diffstat (limited to 'drivers/mmc/core/pwrseq_simple.c')
-rw-r--r-- | drivers/mmc/core/pwrseq_simple.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c index 13ef162cf066..a8b9fee4d62a 100644 --- a/drivers/mmc/core/pwrseq_simple.c +++ b/drivers/mmc/core/pwrseq_simple.c | |||
@@ -40,14 +40,18 @@ static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq, | |||
40 | struct gpio_descs *reset_gpios = pwrseq->reset_gpios; | 40 | struct gpio_descs *reset_gpios = pwrseq->reset_gpios; |
41 | 41 | ||
42 | if (!IS_ERR(reset_gpios)) { | 42 | if (!IS_ERR(reset_gpios)) { |
43 | int i; | 43 | int i, *values; |
44 | int values[reset_gpios->ndescs]; | 44 | int nvalues = reset_gpios->ndescs; |
45 | 45 | ||
46 | for (i = 0; i < reset_gpios->ndescs; i++) | 46 | values = kmalloc_array(nvalues, sizeof(int), GFP_KERNEL); |
47 | if (!values) | ||
48 | return; | ||
49 | |||
50 | for (i = 0; i < nvalues; i++) | ||
47 | values[i] = value; | 51 | values[i] = value; |
48 | 52 | ||
49 | gpiod_set_array_value_cansleep( | 53 | gpiod_set_array_value_cansleep(nvalues, reset_gpios->desc, values); |
50 | reset_gpios->ndescs, reset_gpios->desc, values); | 54 | kfree(values); |
51 | } | 55 | } |
52 | } | 56 | } |
53 | 57 | ||