Lines Matching defs:cs35l32
3 * cs35l32.c -- CS35L32 ALSA SoC audio driver
30 #include <dt-bindings/sound/cs35l32.h>
32 #include "cs35l32.h"
188 .name = "cs35l32-monitor",
350 struct cs35l32_private *cs35l32;
356 cs35l32 = devm_kzalloc(&i2c_client->dev, sizeof(*cs35l32), GFP_KERNEL);
357 if (!cs35l32)
360 i2c_set_clientdata(i2c_client, cs35l32);
362 cs35l32->regmap = devm_regmap_init_i2c(i2c_client, &cs35l32_regmap);
363 if (IS_ERR(cs35l32->regmap)) {
364 ret = PTR_ERR(cs35l32->regmap);
370 cs35l32->pdata = *pdata;
379 &cs35l32->pdata);
385 for (i = 0; i < ARRAY_SIZE(cs35l32->supplies); i++)
386 cs35l32->supplies[i].supply = cs35l32_supply_names[i];
389 ARRAY_SIZE(cs35l32->supplies),
390 cs35l32->supplies);
397 ret = regulator_bulk_enable(ARRAY_SIZE(cs35l32->supplies),
398 cs35l32->supplies);
406 cs35l32->reset_gpio = devm_gpiod_get_optional(&i2c_client->dev,
408 if (IS_ERR(cs35l32->reset_gpio)) {
409 ret = PTR_ERR(cs35l32->reset_gpio);
413 gpiod_set_value_cansleep(cs35l32->reset_gpio, 1);
416 devid = cirrus_read_device_id(cs35l32->regmap, CS35L32_DEVID_AB);
431 ret = regmap_read(cs35l32->regmap, CS35L32_REV_ID, ®);
437 ret = regmap_register_patch(cs35l32->regmap, cs35l32_monitor_patch,
448 if (cs35l32->pdata.boost_mng)
449 regmap_update_bits(cs35l32->regmap, CS35L32_AUDIO_LED_MNGR,
451 cs35l32->pdata.boost_mng);
454 if (cs35l32->pdata.sdout_share)
455 regmap_update_bits(cs35l32->regmap, CS35L32_ADSP_CTL,
457 cs35l32->pdata.sdout_share << 3);
460 if (cs35l32->pdata.sdout_datacfg)
461 regmap_update_bits(cs35l32->regmap, CS35L32_ADSP_CTL,
463 cs35l32->pdata.sdout_datacfg << 4);
466 if (cs35l32->pdata.batt_recov)
467 regmap_update_bits(cs35l32->regmap, CS35L32_BATT_THRESHOLD,
469 cs35l32->pdata.batt_recov << 1);
472 if (cs35l32->pdata.batt_thresh)
473 regmap_update_bits(cs35l32->regmap, CS35L32_BATT_THRESHOLD,
475 cs35l32->pdata.batt_thresh << 4);
478 regmap_update_bits(cs35l32->regmap, CS35L32_PWRCTL1, CS35L32_PDN_AMP,
482 regmap_read(cs35l32->regmap, CS35L32_INT_STATUS_1, ®);
493 gpiod_set_value_cansleep(cs35l32->reset_gpio, 0);
495 regulator_bulk_disable(ARRAY_SIZE(cs35l32->supplies),
496 cs35l32->supplies);
502 struct cs35l32_private *cs35l32 = i2c_get_clientdata(i2c_client);
505 gpiod_set_value_cansleep(cs35l32->reset_gpio, 0);
511 struct cs35l32_private *cs35l32 = dev_get_drvdata(dev);
513 regcache_cache_only(cs35l32->regmap, true);
514 regcache_mark_dirty(cs35l32->regmap);
517 gpiod_set_value_cansleep(cs35l32->reset_gpio, 0);
520 regulator_bulk_disable(ARRAY_SIZE(cs35l32->supplies),
521 cs35l32->supplies);
528 struct cs35l32_private *cs35l32 = dev_get_drvdata(dev);
532 ret = regulator_bulk_enable(ARRAY_SIZE(cs35l32->supplies),
533 cs35l32->supplies);
540 gpiod_set_value_cansleep(cs35l32->reset_gpio, 1);
542 regcache_cache_only(cs35l32->regmap, false);
543 regcache_sync(cs35l32->regmap);
555 { .compatible = "cirrus,cs35l32", },
562 {"cs35l32", 0},
570 .name = "cs35l32",