hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/mux/gpio.c
....@@ -17,20 +17,18 @@
1717
1818 struct mux_gpio {
1919 struct gpio_descs *gpios;
20
- int *val;
2120 };
2221
2322 static int mux_gpio_set(struct mux_control *mux, int state)
2423 {
2524 struct mux_gpio *mux_gpio = mux_chip_priv(mux->chip);
26
- int i;
25
+ DECLARE_BITMAP(values, BITS_PER_TYPE(state));
2726
28
- for (i = 0; i < mux_gpio->gpios->ndescs; i++)
29
- mux_gpio->val[i] = (state >> i) & 1;
27
+ values[0] = state;
3028
3129 gpiod_set_array_value_cansleep(mux_gpio->gpios->ndescs,
3230 mux_gpio->gpios->desc,
33
- mux_gpio->val);
31
+ mux_gpio->gpios->info, values);
3432
3533 return 0;
3634 }
....@@ -58,13 +56,11 @@
5856 if (pins < 0)
5957 return pins;
6058
61
- mux_chip = devm_mux_chip_alloc(dev, 1, sizeof(*mux_gpio) +
62
- pins * sizeof(*mux_gpio->val));
59
+ mux_chip = devm_mux_chip_alloc(dev, 1, sizeof(*mux_gpio));
6360 if (IS_ERR(mux_chip))
6461 return PTR_ERR(mux_chip);
6562
6663 mux_gpio = mux_chip_priv(mux_chip);
67
- mux_gpio->val = (int *)(mux_gpio + 1);
6864 mux_chip->ops = &mux_gpio_ops;
6965
7066 mux_gpio->gpios = devm_gpiod_get_array(dev, "mux", GPIOD_OUT_LOW);