Lines Matching refs:pchip

51 static int lm3630a_read(struct lm3630a_chip *pchip, unsigned int reg)  in lm3630a_read()  argument
56 rval = regmap_read(pchip->regmap, reg, &reg_val); in lm3630a_read()
62 static int lm3630a_write(struct lm3630a_chip *pchip, in lm3630a_write() argument
65 return regmap_write(pchip->regmap, reg, data); in lm3630a_write()
68 static int lm3630a_update(struct lm3630a_chip *pchip, in lm3630a_update() argument
72 return regmap_update_bits(pchip->regmap, reg, mask, data); in lm3630a_update()
76 static int lm3630a_chip_init(struct lm3630a_chip *pchip) in lm3630a_chip_init() argument
79 struct lm3630a_platform_data *pdata = pchip->pdata; in lm3630a_chip_init()
83 rval = lm3630a_write(pchip, 0x50, 0x03); in lm3630a_chip_init()
85 rval |= lm3630a_update(pchip, REG_CONFIG, 0x07, pdata->pwm_ctrl); in lm3630a_chip_init()
87 rval |= lm3630a_write(pchip, REG_BOOST, 0x38); in lm3630a_chip_init()
89 rval |= lm3630a_update(pchip, REG_I_A, 0x1F, 0x1F); in lm3630a_chip_init()
91 rval |= lm3630a_write(pchip, REG_I_B, 0x1F); in lm3630a_chip_init()
93 rval |= lm3630a_update(pchip, REG_CTRL, 0x14, pdata->leda_ctrl); in lm3630a_chip_init()
94 rval |= lm3630a_update(pchip, REG_CTRL, 0x0B, pdata->ledb_ctrl); in lm3630a_chip_init()
97 rval |= lm3630a_write(pchip, REG_BRT_A, pdata->leda_init_brt); in lm3630a_chip_init()
98 rval |= lm3630a_write(pchip, REG_BRT_B, pdata->ledb_init_brt); in lm3630a_chip_init()
101 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_chip_init()
109 struct lm3630a_chip *pchip; in lm3630a_delayed_func() local
111 pchip = container_of(work, struct lm3630a_chip, work.work); in lm3630a_delayed_func()
113 rval = lm3630a_read(pchip, REG_INT_STATUS); in lm3630a_delayed_func()
115 dev_err(pchip->dev, in lm3630a_delayed_func()
120 dev_info(pchip->dev, "REG_INT_STATUS Register is 0x%x\n", rval); in lm3630a_delayed_func()
126 struct lm3630a_chip *pchip = chip; in lm3630a_isr_func() local
129 queue_delayed_work(pchip->irqthread, &pchip->work, delay); in lm3630a_isr_func()
131 rval = lm3630a_update(pchip, REG_CTRL, 0x80, 0x00); in lm3630a_isr_func()
133 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_isr_func()
139 static int lm3630a_intr_config(struct lm3630a_chip *pchip) in lm3630a_intr_config() argument
143 rval = lm3630a_write(pchip, REG_INT_EN, 0x87); in lm3630a_intr_config()
147 INIT_DELAYED_WORK(&pchip->work, lm3630a_delayed_func); in lm3630a_intr_config()
148 pchip->irqthread = create_singlethread_workqueue("lm3630a-irqthd"); in lm3630a_intr_config()
149 if (!pchip->irqthread) { in lm3630a_intr_config()
150 dev_err(pchip->dev, "create irq thread fail\n"); in lm3630a_intr_config()
154 (pchip->irq, NULL, lm3630a_isr_func, in lm3630a_intr_config()
155 IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "lm3630a_irq", pchip)) { in lm3630a_intr_config()
156 dev_err(pchip->dev, "request threaded irq fail\n"); in lm3630a_intr_config()
157 destroy_workqueue(pchip->irqthread); in lm3630a_intr_config()
163 static void lm3630a_pwm_ctrl(struct lm3630a_chip *pchip, int br, int br_max) in lm3630a_pwm_ctrl() argument
165 unsigned int period = pwm_get_period(pchip->pwmd); in lm3630a_pwm_ctrl()
168 pwm_config(pchip->pwmd, duty, period); in lm3630a_pwm_ctrl()
170 pwm_enable(pchip->pwmd); in lm3630a_pwm_ctrl()
172 pwm_disable(pchip->pwmd); in lm3630a_pwm_ctrl()
179 struct lm3630a_chip *pchip = bl_get_data(bl); in lm3630a_bank_a_update_status() local
180 enum lm3630a_pwm_ctrl pwm_ctrl = pchip->pdata->pwm_ctrl; in lm3630a_bank_a_update_status()
184 lm3630a_pwm_ctrl(pchip, bl->props.brightness, in lm3630a_bank_a_update_status()
190 ret = lm3630a_update(pchip, REG_CTRL, 0x80, 0x00); in lm3630a_bank_a_update_status()
195 ret = lm3630a_write(pchip, REG_BRT_A, bl->props.brightness); in lm3630a_bank_a_update_status()
197 ret |= lm3630a_update(pchip, REG_CTRL, LM3630A_LEDA_ENABLE, 0); in lm3630a_bank_a_update_status()
199 ret |= lm3630a_update(pchip, REG_CTRL, in lm3630a_bank_a_update_status()
206 dev_err(pchip->dev, "i2c failed to access\n"); in lm3630a_bank_a_update_status()
213 struct lm3630a_chip *pchip = bl_get_data(bl); in lm3630a_bank_a_get_brightness() local
214 enum lm3630a_pwm_ctrl pwm_ctrl = pchip->pdata->pwm_ctrl; in lm3630a_bank_a_get_brightness()
217 rval = lm3630a_read(pchip, REG_PWM_OUTHIGH); in lm3630a_bank_a_get_brightness()
221 rval = lm3630a_read(pchip, REG_PWM_OUTLOW); in lm3630a_bank_a_get_brightness()
229 rval = lm3630a_update(pchip, REG_CTRL, 0x80, 0x00); in lm3630a_bank_a_get_brightness()
233 rval = lm3630a_read(pchip, REG_BRT_A); in lm3630a_bank_a_get_brightness()
242 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_bank_a_get_brightness()
256 struct lm3630a_chip *pchip = bl_get_data(bl); in lm3630a_bank_b_update_status() local
257 enum lm3630a_pwm_ctrl pwm_ctrl = pchip->pdata->pwm_ctrl; in lm3630a_bank_b_update_status()
261 lm3630a_pwm_ctrl(pchip, bl->props.brightness, in lm3630a_bank_b_update_status()
267 ret = lm3630a_update(pchip, REG_CTRL, 0x80, 0x00); in lm3630a_bank_b_update_status()
272 ret = lm3630a_write(pchip, REG_BRT_B, bl->props.brightness); in lm3630a_bank_b_update_status()
274 ret |= lm3630a_update(pchip, REG_CTRL, LM3630A_LEDB_ENABLE, 0); in lm3630a_bank_b_update_status()
276 ret |= lm3630a_update(pchip, REG_CTRL, in lm3630a_bank_b_update_status()
283 dev_err(pchip->dev, "i2c failed to access REG_CTRL\n"); in lm3630a_bank_b_update_status()
290 struct lm3630a_chip *pchip = bl_get_data(bl); in lm3630a_bank_b_get_brightness() local
291 enum lm3630a_pwm_ctrl pwm_ctrl = pchip->pdata->pwm_ctrl; in lm3630a_bank_b_get_brightness()
294 rval = lm3630a_read(pchip, REG_PWM_OUTHIGH); in lm3630a_bank_b_get_brightness()
298 rval = lm3630a_read(pchip, REG_PWM_OUTLOW); in lm3630a_bank_b_get_brightness()
306 rval = lm3630a_update(pchip, REG_CTRL, 0x80, 0x00); in lm3630a_bank_b_get_brightness()
310 rval = lm3630a_read(pchip, REG_BRT_B); in lm3630a_bank_b_get_brightness()
319 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_bank_b_get_brightness()
329 static int lm3630a_backlight_register(struct lm3630a_chip *pchip) in lm3630a_backlight_register() argument
332 struct lm3630a_platform_data *pdata = pchip->pdata; in lm3630a_backlight_register()
338 pchip->bleda = in lm3630a_backlight_register()
339 devm_backlight_device_register(pchip->dev, "lm3630a_leda", in lm3630a_backlight_register()
340 pchip->dev, pchip, in lm3630a_backlight_register()
342 if (IS_ERR(pchip->bleda)) in lm3630a_backlight_register()
343 return PTR_ERR(pchip->bleda); in lm3630a_backlight_register()
350 pchip->bledb = in lm3630a_backlight_register()
351 devm_backlight_device_register(pchip->dev, "lm3630a_ledb", in lm3630a_backlight_register()
352 pchip->dev, pchip, in lm3630a_backlight_register()
354 if (IS_ERR(pchip->bledb)) in lm3630a_backlight_register()
355 return PTR_ERR(pchip->bledb); in lm3630a_backlight_register()
370 struct lm3630a_chip *pchip; in lm3630a_probe() local
378 pchip = devm_kzalloc(&client->dev, sizeof(struct lm3630a_chip), in lm3630a_probe()
380 if (!pchip) in lm3630a_probe()
382 pchip->dev = &client->dev; in lm3630a_probe()
384 pchip->regmap = devm_regmap_init_i2c(client, &lm3630a_regmap); in lm3630a_probe()
385 if (IS_ERR(pchip->regmap)) { in lm3630a_probe()
386 rval = PTR_ERR(pchip->regmap); in lm3630a_probe()
391 i2c_set_clientdata(client, pchip); in lm3630a_probe()
393 pdata = devm_kzalloc(pchip->dev, in lm3630a_probe()
406 pchip->pdata = pdata; in lm3630a_probe()
409 rval = lm3630a_chip_init(pchip); in lm3630a_probe()
415 rval = lm3630a_backlight_register(pchip); in lm3630a_probe()
422 pchip->pwmd = devm_pwm_get(pchip->dev, "lm3630a-pwm"); in lm3630a_probe()
423 if (IS_ERR(pchip->pwmd)) { in lm3630a_probe()
425 return PTR_ERR(pchip->pwmd); in lm3630a_probe()
428 pchip->pwmd->period = pdata->pwm_period; in lm3630a_probe()
431 pchip->irq = client->irq; in lm3630a_probe()
432 if (pchip->irq) { in lm3630a_probe()
433 rval = lm3630a_intr_config(pchip); in lm3630a_probe()
444 struct lm3630a_chip *pchip = i2c_get_clientdata(client); in lm3630a_remove() local
446 rval = lm3630a_write(pchip, REG_BRT_A, 0); in lm3630a_remove()
448 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_remove()
450 rval = lm3630a_write(pchip, REG_BRT_B, 0); in lm3630a_remove()
452 dev_err(pchip->dev, "i2c failed to access register\n"); in lm3630a_remove()
454 if (pchip->irq) { in lm3630a_remove()
455 free_irq(pchip->irq, pchip); in lm3630a_remove()
456 flush_workqueue(pchip->irqthread); in lm3630a_remove()
457 destroy_workqueue(pchip->irqthread); in lm3630a_remove()