Lines Matching refs:lm3533
87 int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val) in lm3533_read() argument
92 ret = regmap_read(lm3533->regmap, reg, &tmp); in lm3533_read()
94 dev_err(lm3533->dev, "failed to read register %02x: %d\n", in lm3533_read()
101 dev_dbg(lm3533->dev, "read [%02x]: %02x\n", reg, *val); in lm3533_read()
107 int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val) in lm3533_write() argument
111 dev_dbg(lm3533->dev, "write [%02x]: %02x\n", reg, val); in lm3533_write()
113 ret = regmap_write(lm3533->regmap, reg, val); in lm3533_write()
115 dev_err(lm3533->dev, "failed to write register %02x: %d\n", in lm3533_write()
123 int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask) in lm3533_update() argument
127 dev_dbg(lm3533->dev, "update [%02x]: %02x/%02x\n", reg, val, mask); in lm3533_update()
129 ret = regmap_update_bits(lm3533->regmap, reg, mask, val); in lm3533_update()
131 dev_err(lm3533->dev, "failed to update register %02x: %d\n", in lm3533_update()
139 static int lm3533_set_boost_freq(struct lm3533 *lm3533, in lm3533_set_boost_freq() argument
144 ret = lm3533_update(lm3533, LM3533_REG_BOOST_PWM, in lm3533_set_boost_freq()
148 dev_err(lm3533->dev, "failed to set boost frequency\n"); in lm3533_set_boost_freq()
154 static int lm3533_set_boost_ovp(struct lm3533 *lm3533, in lm3533_set_boost_ovp() argument
159 ret = lm3533_update(lm3533, LM3533_REG_BOOST_PWM, in lm3533_set_boost_ovp()
163 dev_err(lm3533->dev, "failed to set boost ovp\n"); in lm3533_set_boost_ovp()
171 static int lm3533_set_hvled_config(struct lm3533 *lm3533, u8 hvled, u8 bl) in lm3533_set_hvled_config() argument
188 ret = lm3533_update(lm3533, LM3533_REG_OUTPUT_CONF1, val, mask); in lm3533_set_hvled_config()
190 dev_err(lm3533->dev, "failed to set hvled config\n"); in lm3533_set_hvled_config()
198 static int lm3533_set_lvled_config(struct lm3533 *lm3533, u8 lvled, u8 led) in lm3533_set_lvled_config() argument
223 ret = lm3533_update(lm3533, reg, val, mask); in lm3533_set_lvled_config()
225 dev_err(lm3533->dev, "failed to set lvled config\n"); in lm3533_set_lvled_config()
230 static void lm3533_enable(struct lm3533 *lm3533) in lm3533_enable() argument
232 if (gpio_is_valid(lm3533->gpio_hwen)) in lm3533_enable()
233 gpio_set_value(lm3533->gpio_hwen, 1); in lm3533_enable()
236 static void lm3533_disable(struct lm3533 *lm3533) in lm3533_disable() argument
238 if (gpio_is_valid(lm3533->gpio_hwen)) in lm3533_disable()
239 gpio_set_value(lm3533->gpio_hwen, 0); in lm3533_disable()
263 struct lm3533 *lm3533 = dev_get_drvdata(dev); in show_output() local
287 ret = lm3533_read(lm3533, reg, &val); in show_output()
300 struct lm3533 *lm3533 = dev_get_drvdata(dev); in store_output() local
310 ret = lm3533_set_hvled_config(lm3533, id, val); in store_output()
312 ret = lm3533_set_lvled_config(lm3533, id, val); in store_output()
366 struct lm3533 *lm3533 = dev_get_drvdata(dev); in lm3533_attr_is_visible() local
372 if (!lm3533->have_backlights && type == LM3533_ATTR_TYPE_BACKLIGHT) in lm3533_attr_is_visible()
374 else if (!lm3533->have_leds && type == LM3533_ATTR_TYPE_LED) in lm3533_attr_is_visible()
385 static int lm3533_device_als_init(struct lm3533 *lm3533) in lm3533_device_als_init() argument
387 struct lm3533_platform_data *pdata = dev_get_platdata(lm3533->dev); in lm3533_device_als_init()
396 ret = mfd_add_devices(lm3533->dev, 0, lm3533_als_devs, 1, NULL, in lm3533_device_als_init()
399 dev_err(lm3533->dev, "failed to add ALS device\n"); in lm3533_device_als_init()
403 lm3533->have_als = 1; in lm3533_device_als_init()
408 static int lm3533_device_bl_init(struct lm3533 *lm3533) in lm3533_device_bl_init() argument
410 struct lm3533_platform_data *pdata = dev_get_platdata(lm3533->dev); in lm3533_device_bl_init()
425 ret = mfd_add_devices(lm3533->dev, 0, lm3533_bl_devs, in lm3533_device_bl_init()
428 dev_err(lm3533->dev, "failed to add backlight devices\n"); in lm3533_device_bl_init()
432 lm3533->have_backlights = 1; in lm3533_device_bl_init()
437 static int lm3533_device_led_init(struct lm3533 *lm3533) in lm3533_device_led_init() argument
439 struct lm3533_platform_data *pdata = dev_get_platdata(lm3533->dev); in lm3533_device_led_init()
454 ret = mfd_add_devices(lm3533->dev, 0, lm3533_led_devs, in lm3533_device_led_init()
457 dev_err(lm3533->dev, "failed to add LED devices\n"); in lm3533_device_led_init()
461 lm3533->have_leds = 1; in lm3533_device_led_init()
466 static int lm3533_device_setup(struct lm3533 *lm3533, in lm3533_device_setup() argument
471 ret = lm3533_set_boost_freq(lm3533, pdata->boost_freq); in lm3533_device_setup()
475 ret = lm3533_set_boost_ovp(lm3533, pdata->boost_ovp); in lm3533_device_setup()
482 static int lm3533_device_init(struct lm3533 *lm3533) in lm3533_device_init() argument
484 struct lm3533_platform_data *pdata = dev_get_platdata(lm3533->dev); in lm3533_device_init()
487 dev_dbg(lm3533->dev, "%s\n", __func__); in lm3533_device_init()
490 dev_err(lm3533->dev, "no platform data\n"); in lm3533_device_init()
494 lm3533->gpio_hwen = pdata->gpio_hwen; in lm3533_device_init()
496 dev_set_drvdata(lm3533->dev, lm3533); in lm3533_device_init()
498 if (gpio_is_valid(lm3533->gpio_hwen)) { in lm3533_device_init()
499 ret = devm_gpio_request_one(lm3533->dev, lm3533->gpio_hwen, in lm3533_device_init()
502 dev_err(lm3533->dev, in lm3533_device_init()
504 lm3533->gpio_hwen); in lm3533_device_init()
509 lm3533_enable(lm3533); in lm3533_device_init()
511 ret = lm3533_device_setup(lm3533, pdata); in lm3533_device_init()
515 lm3533_device_als_init(lm3533); in lm3533_device_init()
516 lm3533_device_bl_init(lm3533); in lm3533_device_init()
517 lm3533_device_led_init(lm3533); in lm3533_device_init()
519 ret = sysfs_create_group(&lm3533->dev->kobj, &lm3533_attribute_group); in lm3533_device_init()
521 dev_err(lm3533->dev, "failed to create sysfs attributes\n"); in lm3533_device_init()
528 mfd_remove_devices(lm3533->dev); in lm3533_device_init()
530 lm3533_disable(lm3533); in lm3533_device_init()
535 static void lm3533_device_exit(struct lm3533 *lm3533) in lm3533_device_exit() argument
537 dev_dbg(lm3533->dev, "%s\n", __func__); in lm3533_device_exit()
539 sysfs_remove_group(&lm3533->dev->kobj, &lm3533_attribute_group); in lm3533_device_exit()
541 mfd_remove_devices(lm3533->dev); in lm3533_device_exit()
542 lm3533_disable(lm3533); in lm3533_device_exit()
598 struct lm3533 *lm3533; in lm3533_i2c_probe() local
603 lm3533 = devm_kzalloc(&i2c->dev, sizeof(*lm3533), GFP_KERNEL); in lm3533_i2c_probe()
604 if (!lm3533) in lm3533_i2c_probe()
607 i2c_set_clientdata(i2c, lm3533); in lm3533_i2c_probe()
609 lm3533->regmap = devm_regmap_init_i2c(i2c, ®map_config); in lm3533_i2c_probe()
610 if (IS_ERR(lm3533->regmap)) in lm3533_i2c_probe()
611 return PTR_ERR(lm3533->regmap); in lm3533_i2c_probe()
613 lm3533->dev = &i2c->dev; in lm3533_i2c_probe()
614 lm3533->irq = i2c->irq; in lm3533_i2c_probe()
616 ret = lm3533_device_init(lm3533); in lm3533_i2c_probe()
625 struct lm3533 *lm3533 = i2c_get_clientdata(i2c); in lm3533_i2c_remove() local
629 lm3533_device_exit(lm3533); in lm3533_i2c_remove()