Lines Matching +full:id +full:- +full:gpios
1 // SPDX-License-Identifier: GPL-2.0+
20 #define N_VOLTAGES ((MAX_UV - MIN_UV) / STEP_UV + 1)
40 int id = rdev_get_id(rdev), ret; in rt4801_set_voltage_sel() local
42 if (priv->enable_flag & BIT(id)) { in rt4801_set_voltage_sel()
48 priv->volt_sel[id] = selector; in rt4801_set_voltage_sel()
55 int id = rdev_get_id(rdev); in rt4801_get_voltage_sel() local
57 if (priv->enable_flag & BIT(id)) in rt4801_get_voltage_sel()
60 return priv->volt_sel[id]; in rt4801_get_voltage_sel()
66 struct gpio_descs *gpios = priv->enable_gpios; in rt4801_enable() local
67 int id = rdev_get_id(rdev), ret; in rt4801_enable() local
69 if (gpios->ndescs <= id) { in rt4801_enable()
70 dev_warn(&rdev->dev, "no dedicated gpio can control\n"); in rt4801_enable()
74 gpiod_set_value(gpios->desc[id], 1); in rt4801_enable()
77 ret = regmap_write(rdev->regmap, rdev->desc->vsel_reg, priv->volt_sel[id]); in rt4801_enable()
81 priv->enable_flag |= BIT(id); in rt4801_enable()
88 struct gpio_descs *gpios = priv->enable_gpios; in rt4801_disable() local
89 int id = rdev_get_id(rdev); in rt4801_disable() local
91 if (gpios->ndescs <= id) { in rt4801_disable()
92 dev_warn(&rdev->dev, "no dedicated gpio can control\n"); in rt4801_disable()
96 gpiod_set_value(gpios->desc[id], 0); in rt4801_disable()
99 priv->enable_flag &= ~BIT(id); in rt4801_disable()
106 int id = rdev_get_id(rdev); in rt4801_is_enabled() local
108 return !!(priv->enable_flag & BIT(id)); in rt4801_is_enabled()
126 .id = DSV_OUT_POS,
139 .id = DSV_OUT_NEG,
161 priv = devm_kzalloc(&i2c->dev, sizeof(*priv), GFP_KERNEL); in rt4801_probe()
163 return -ENOMEM; in rt4801_probe()
165 priv->dev = &i2c->dev; in rt4801_probe()
167 priv->enable_flag = DSVALL_ENABLE; in rt4801_probe()
171 dev_err(&i2c->dev, "Failed to init regmap\n"); in rt4801_probe()
175 priv->enable_gpios = devm_gpiod_get_array_optional(&i2c->dev, "enable", GPIOD_OUT_HIGH); in rt4801_probe()
176 if (IS_ERR(priv->enable_gpios)) { in rt4801_probe()
177 dev_err(&i2c->dev, "Failed to get gpios\n"); in rt4801_probe()
178 return PTR_ERR(priv->enable_gpios); in rt4801_probe()
183 struct regulator_config config = { .dev = &i2c->dev, .driver_data = priv, in rt4801_probe()
190 ret = regmap_read(regmap, desc->vsel_reg, &val); in rt4801_probe()
194 priv->volt_sel[i] = val & desc->vsel_mask; in rt4801_probe()
196 rdev = devm_regulator_register(&i2c->dev, desc, &config); in rt4801_probe()
198 dev_err(&i2c->dev, "Failed to register [%d] regulator\n", i); in rt4801_probe()