Lines Matching refs:as3722
208 static int as3722_check_device_id(struct as3722 *as3722) in as3722_check_device_id() argument
214 ret = as3722_read(as3722, AS3722_ASIC_ID1_REG, &val); in as3722_check_device_id()
216 dev_err(as3722->dev, "ASIC_ID1 read failed: %d\n", ret); in as3722_check_device_id()
221 dev_err(as3722->dev, "Device is not AS3722, ID is 0x%x\n", val); in as3722_check_device_id()
225 ret = as3722_read(as3722, AS3722_ASIC_ID2_REG, &val); in as3722_check_device_id()
227 dev_err(as3722->dev, "ASIC_ID2 read failed: %d\n", ret); in as3722_check_device_id()
231 dev_info(as3722->dev, "AS3722 with revision 0x%x found\n", val); in as3722_check_device_id()
235 static int as3722_configure_pullups(struct as3722 *as3722) in as3722_configure_pullups() argument
240 if (as3722->en_intern_int_pullup) in as3722_configure_pullups()
242 if (as3722->en_intern_i2c_pullup) in as3722_configure_pullups()
245 ret = as3722_update_bits(as3722, AS3722_IOVOLTAGE_REG, in as3722_configure_pullups()
248 dev_err(as3722->dev, "IOVOLTAGE_REG update failed: %d\n", ret); in as3722_configure_pullups()
319 struct as3722 *as3722) in as3722_i2c_of_probe() argument
335 as3722->en_intern_int_pullup = of_property_read_bool(np, in as3722_i2c_of_probe()
337 as3722->en_intern_i2c_pullup = of_property_read_bool(np, in as3722_i2c_of_probe()
339 as3722->en_ac_ok_pwr_on = of_property_read_bool(np, in as3722_i2c_of_probe()
341 as3722->irq_flags = irqd_get_trigger_type(irq_data); in as3722_i2c_of_probe()
342 dev_dbg(&i2c->dev, "IRQ flags are 0x%08lx\n", as3722->irq_flags); in as3722_i2c_of_probe()
349 struct as3722 *as3722; in as3722_i2c_probe() local
354 as3722 = devm_kzalloc(&i2c->dev, sizeof(struct as3722), GFP_KERNEL); in as3722_i2c_probe()
355 if (!as3722) in as3722_i2c_probe()
358 as3722->dev = &i2c->dev; in as3722_i2c_probe()
359 as3722->chip_irq = i2c->irq; in as3722_i2c_probe()
360 i2c_set_clientdata(i2c, as3722); in as3722_i2c_probe()
362 ret = as3722_i2c_of_probe(i2c, as3722); in as3722_i2c_probe()
366 as3722->regmap = devm_regmap_init_i2c(i2c, &as3722_regmap_config); in as3722_i2c_probe()
367 if (IS_ERR(as3722->regmap)) { in as3722_i2c_probe()
368 ret = PTR_ERR(as3722->regmap); in as3722_i2c_probe()
373 ret = as3722_check_device_id(as3722); in as3722_i2c_probe()
377 irq_flags = as3722->irq_flags | IRQF_ONESHOT; in as3722_i2c_probe()
378 ret = devm_regmap_add_irq_chip(as3722->dev, as3722->regmap, in as3722_i2c_probe()
379 as3722->chip_irq, in as3722_i2c_probe()
381 &as3722->irq_data); in as3722_i2c_probe()
383 dev_err(as3722->dev, "Failed to add regmap irq: %d\n", ret); in as3722_i2c_probe()
387 ret = as3722_configure_pullups(as3722); in as3722_i2c_probe()
391 if (as3722->en_ac_ok_pwr_on) in as3722_i2c_probe()
393 ret = as3722_update_bits(as3722, AS3722_CTRL_SEQU1_REG, in as3722_i2c_probe()
396 dev_err(as3722->dev, "CTRLsequ1 update failed: %d\n", ret); in as3722_i2c_probe()
402 regmap_irq_get_domain(as3722->irq_data)); in as3722_i2c_probe()
404 dev_err(as3722->dev, "Failed to add MFD devices: %d\n", ret); in as3722_i2c_probe()
408 device_init_wakeup(as3722->dev, true); in as3722_i2c_probe()
410 dev_dbg(as3722->dev, "AS3722 core driver initialized successfully\n"); in as3722_i2c_probe()
416 struct as3722 *as3722 = dev_get_drvdata(dev); in as3722_i2c_suspend() local
419 enable_irq_wake(as3722->chip_irq); in as3722_i2c_suspend()
420 disable_irq(as3722->chip_irq); in as3722_i2c_suspend()
427 struct as3722 *as3722 = dev_get_drvdata(dev); in as3722_i2c_resume() local
429 enable_irq(as3722->chip_irq); in as3722_i2c_resume()
432 disable_irq_wake(as3722->chip_irq); in as3722_i2c_resume()