Lines Matching +full:iio +full:- +full:consumer

18 #include <linux/gpio/consumer.h>
19 #include <linux/iio/consumer.h>
20 #include <linux/iio/types.h>
47 val->intval = batt->technology; in lego_ev3_battery_get_property()
50 /* battery voltage is iio channel * 2 + Vce of transistor */ in lego_ev3_battery_get_property()
51 ret = iio_read_channel_processed(batt->iio_v, &val->intval); in lego_ev3_battery_get_property()
55 val->intval *= 2000; in lego_ev3_battery_get_property()
56 val->intval += 50000; in lego_ev3_battery_get_property()
59 ret = iio_read_channel_processed(batt->iio_i, &val2); in lego_ev3_battery_get_property()
65 val->intval += val2; in lego_ev3_battery_get_property()
68 val->intval = batt->v_max; in lego_ev3_battery_get_property()
71 val->intval = batt->v_min; in lego_ev3_battery_get_property()
74 /* battery current is iio channel / 15 / 0.05 ohms */ in lego_ev3_battery_get_property()
75 ret = iio_read_channel_processed(batt->iio_i, &val->intval); in lego_ev3_battery_get_property()
79 val->intval *= 20000; in lego_ev3_battery_get_property()
80 val->intval /= 15; in lego_ev3_battery_get_property()
83 val->intval = POWER_SUPPLY_SCOPE_SYSTEM; in lego_ev3_battery_get_property()
86 return -EINVAL; in lego_ev3_battery_get_property()
101 * Only allow changing technology from Unknown to NiMH. Li-ion in lego_ev3_battery_set_property()
108 if (batt->technology != POWER_SUPPLY_TECHNOLOGY_UNKNOWN) in lego_ev3_battery_set_property()
109 return -EINVAL; in lego_ev3_battery_set_property()
110 switch (val->intval) { in lego_ev3_battery_set_property()
112 batt->technology = POWER_SUPPLY_TECHNOLOGY_NiMH; in lego_ev3_battery_set_property()
113 batt->v_max = 7800000; in lego_ev3_battery_set_property()
114 batt->v_min = 5400000; in lego_ev3_battery_set_property()
117 return -EINVAL; in lego_ev3_battery_set_property()
121 return -EINVAL; in lego_ev3_battery_set_property()
133 batt->technology == POWER_SUPPLY_TECHNOLOGY_UNKNOWN; in lego_ev3_battery_property_is_writeable()
146 .name = "lego-ev3-battery",
157 struct device *dev = &pdev->dev; in lego_ev3_battery_probe()
164 return -ENOMEM; in lego_ev3_battery_probe()
168 batt->iio_v = devm_iio_channel_get(dev, "voltage"); in lego_ev3_battery_probe()
169 err = PTR_ERR_OR_ZERO(batt->iio_v); in lego_ev3_battery_probe()
172 "Failed to get voltage iio channel\n"); in lego_ev3_battery_probe()
174 batt->iio_i = devm_iio_channel_get(dev, "current"); in lego_ev3_battery_probe()
175 err = PTR_ERR_OR_ZERO(batt->iio_i); in lego_ev3_battery_probe()
178 "Failed to get current iio channel\n"); in lego_ev3_battery_probe()
180 batt->rechargeable_gpio = devm_gpiod_get(dev, "rechargeable", GPIOD_IN); in lego_ev3_battery_probe()
181 err = PTR_ERR_OR_ZERO(batt->rechargeable_gpio); in lego_ev3_battery_probe()
190 if (gpiod_get_value(batt->rechargeable_gpio)) { in lego_ev3_battery_probe()
191 /* 2-cell Li-ion, 7.4V nominal */ in lego_ev3_battery_probe()
192 batt->technology = POWER_SUPPLY_TECHNOLOGY_LION; in lego_ev3_battery_probe()
193 batt->v_max = 84000000; in lego_ev3_battery_probe()
194 batt->v_min = 60000000; in lego_ev3_battery_probe()
197 batt->technology = POWER_SUPPLY_TECHNOLOGY_UNKNOWN; in lego_ev3_battery_probe()
198 batt->v_max = 90000000; in lego_ev3_battery_probe()
199 batt->v_min = 48000000; in lego_ev3_battery_probe()
202 psy_cfg.fwnode = dev_fwnode(&pdev->dev); in lego_ev3_battery_probe()
205 batt->psy = devm_power_supply_register(dev, &lego_ev3_battery_desc, in lego_ev3_battery_probe()
207 err = PTR_ERR_OR_ZERO(batt->psy); in lego_ev3_battery_probe()
217 { .compatible = "lego,ev3-battery", },
224 .name = "lego-ev3-battery",