diff options
Diffstat (limited to 'drivers/tty/serial/serial_mctrl_gpio.c')
-rw-r--r-- | drivers/tty/serial/serial_mctrl_gpio.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c index 1c06325beaca..7d9d2c7b6c39 100644 --- a/drivers/tty/serial/serial_mctrl_gpio.c +++ b/drivers/tty/serial/serial_mctrl_gpio.c | |||
@@ -40,7 +40,7 @@ void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl) | |||
40 | { | 40 | { |
41 | enum mctrl_gpio_idx i; | 41 | enum mctrl_gpio_idx i; |
42 | struct gpio_desc *desc_array[UART_GPIO_MAX]; | 42 | struct gpio_desc *desc_array[UART_GPIO_MAX]; |
43 | int value_array[UART_GPIO_MAX]; | 43 | DECLARE_BITMAP(values, UART_GPIO_MAX); |
44 | unsigned int count = 0; | 44 | unsigned int count = 0; |
45 | 45 | ||
46 | if (gpios == NULL) | 46 | if (gpios == NULL) |
@@ -49,10 +49,11 @@ void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl) | |||
49 | for (i = 0; i < UART_GPIO_MAX; i++) | 49 | for (i = 0; i < UART_GPIO_MAX; i++) |
50 | if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { | 50 | if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { |
51 | desc_array[count] = gpios->gpio[i]; | 51 | desc_array[count] = gpios->gpio[i]; |
52 | value_array[count] = !!(mctrl & mctrl_gpios_desc[i].mctrl); | 52 | __assign_bit(count, values, |
53 | mctrl & mctrl_gpios_desc[i].mctrl); | ||
53 | count++; | 54 | count++; |
54 | } | 55 | } |
55 | gpiod_set_array_value(count, desc_array, value_array); | 56 | gpiod_set_array_value(count, desc_array, values); |
56 | } | 57 | } |
57 | EXPORT_SYMBOL_GPL(mctrl_gpio_set); | 58 | EXPORT_SYMBOL_GPL(mctrl_gpio_set); |
58 | 59 | ||