aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/serial_mctrl_gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/tty/serial/serial_mctrl_gpio.c')
-rw-r--r--drivers/tty/serial/serial_mctrl_gpio.c7
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}
57EXPORT_SYMBOL_GPL(mctrl_gpio_set); 58EXPORT_SYMBOL_GPL(mctrl_gpio_set);
58 59