Skip to content

Commit a01b893

Browse files
Adam Thomsonbroonie
authored andcommitted
ASoC: da7219: Convert driver to use generic device/fwnode functions
This change converts the driver from using the of_* functions to using the device_* and fwnode_* functions for accssing FW related data. Signed-off-by: Adam Thomson <[email protected]> Acked-by: Sathyanarayana Nujella <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Mark Brown <[email protected]>
1 parent 613e972 commit a01b893

File tree

2 files changed

+68
-69
lines changed

2 files changed

+68
-69
lines changed

sound/soc/codecs/da7219-aad.c

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
#include <linux/module.h>
1515
#include <linux/platform_device.h>
16-
#include <linux/of_device.h>
17-
#include <linux/of_irq.h>
16+
#include <linux/i2c.h>
17+
#include <linux/property.h>
1818
#include <linux/pm_wakeirq.h>
1919
#include <linux/slab.h>
2020
#include <linux/delay.h>
@@ -382,11 +382,11 @@ static irqreturn_t da7219_aad_irq_thread(int irq, void *data)
382382
}
383383

384384
/*
385-
* DT to pdata conversion
385+
* DT/ACPI to pdata conversion
386386
*/
387387

388388
static enum da7219_aad_micbias_pulse_lvl
389-
da7219_aad_of_micbias_pulse_lvl(struct snd_soc_codec *codec, u32 val)
389+
da7219_aad_fw_micbias_pulse_lvl(struct snd_soc_codec *codec, u32 val)
390390
{
391391
switch (val) {
392392
case 2800:
@@ -400,7 +400,7 @@ static enum da7219_aad_micbias_pulse_lvl
400400
}
401401

402402
static enum da7219_aad_btn_cfg
403-
da7219_aad_of_btn_cfg(struct snd_soc_codec *codec, u32 val)
403+
da7219_aad_fw_btn_cfg(struct snd_soc_codec *codec, u32 val)
404404
{
405405
switch (val) {
406406
case 2:
@@ -424,7 +424,7 @@ static enum da7219_aad_btn_cfg
424424
}
425425

426426
static enum da7219_aad_mic_det_thr
427-
da7219_aad_of_mic_det_thr(struct snd_soc_codec *codec, u32 val)
427+
da7219_aad_fw_mic_det_thr(struct snd_soc_codec *codec, u32 val)
428428
{
429429
switch (val) {
430430
case 200:
@@ -442,7 +442,7 @@ static enum da7219_aad_mic_det_thr
442442
}
443443

444444
static enum da7219_aad_jack_ins_deb
445-
da7219_aad_of_jack_ins_deb(struct snd_soc_codec *codec, u32 val)
445+
da7219_aad_fw_jack_ins_deb(struct snd_soc_codec *codec, u32 val)
446446
{
447447
switch (val) {
448448
case 5:
@@ -468,7 +468,7 @@ static enum da7219_aad_jack_ins_deb
468468
}
469469

470470
static enum da7219_aad_jack_det_rate
471-
da7219_aad_of_jack_det_rate(struct snd_soc_codec *codec, const char *str)
471+
da7219_aad_fw_jack_det_rate(struct snd_soc_codec *codec, const char *str)
472472
{
473473
if (!strcmp(str, "32ms_64ms")) {
474474
return DA7219_AAD_JACK_DET_RATE_32_64MS;
@@ -485,7 +485,7 @@ static enum da7219_aad_jack_det_rate
485485
}
486486

487487
static enum da7219_aad_jack_rem_deb
488-
da7219_aad_of_jack_rem_deb(struct snd_soc_codec *codec, u32 val)
488+
da7219_aad_fw_jack_rem_deb(struct snd_soc_codec *codec, u32 val)
489489
{
490490
switch (val) {
491491
case 1:
@@ -503,7 +503,7 @@ static enum da7219_aad_jack_rem_deb
503503
}
504504

505505
static enum da7219_aad_btn_avg
506-
da7219_aad_of_btn_avg(struct snd_soc_codec *codec, u32 val)
506+
da7219_aad_fw_btn_avg(struct snd_soc_codec *codec, u32 val)
507507
{
508508
switch (val) {
509509
case 1:
@@ -521,7 +521,7 @@ static enum da7219_aad_btn_avg
521521
}
522522

523523
static enum da7219_aad_adc_1bit_rpt
524-
da7219_aad_of_adc_1bit_rpt(struct snd_soc_codec *codec, u32 val)
524+
da7219_aad_fw_adc_1bit_rpt(struct snd_soc_codec *codec, u32 val)
525525
{
526526
switch (val) {
527527
case 1:
@@ -538,97 +538,96 @@ static enum da7219_aad_adc_1bit_rpt
538538
}
539539
}
540540

541-
static struct da7219_aad_pdata *da7219_aad_of_to_pdata(struct snd_soc_codec *codec)
541+
static struct da7219_aad_pdata *da7219_aad_fw_to_pdata(struct snd_soc_codec *codec)
542542
{
543-
struct device_node *np = codec->dev->of_node;
544-
struct device_node *aad_np = of_find_node_by_name(np, "da7219_aad");
543+
struct device *dev = codec->dev;
544+
struct i2c_client *i2c = to_i2c_client(dev);
545+
struct fwnode_handle *aad_np;
545546
struct da7219_aad_pdata *aad_pdata;
546-
const char *of_str;
547-
u32 of_val32;
547+
const char *fw_str;
548+
u32 fw_val32;
548549

550+
aad_np = device_get_named_child_node(dev, "da7219_aad");
549551
if (!aad_np)
550552
return NULL;
551553

552554
aad_pdata = devm_kzalloc(codec->dev, sizeof(*aad_pdata), GFP_KERNEL);
553555
if (!aad_pdata)
554-
goto out;
556+
return NULL;
555557

556-
aad_pdata->irq = irq_of_parse_and_map(np, 0);
558+
aad_pdata->irq = i2c->irq;
557559

558-
if (of_property_read_u32(aad_np, "dlg,micbias-pulse-lvl",
559-
&of_val32) >= 0)
560+
if (fwnode_property_read_u32(aad_np, "dlg,micbias-pulse-lvl",
561+
&fw_val32) >= 0)
560562
aad_pdata->micbias_pulse_lvl =
561-
da7219_aad_of_micbias_pulse_lvl(codec, of_val32);
563+
da7219_aad_fw_micbias_pulse_lvl(codec, fw_val32);
562564
else
563565
aad_pdata->micbias_pulse_lvl = DA7219_AAD_MICBIAS_PULSE_LVL_OFF;
564566

565-
if (of_property_read_u32(aad_np, "dlg,micbias-pulse-time",
566-
&of_val32) >= 0)
567-
aad_pdata->micbias_pulse_time = of_val32;
567+
if (fwnode_property_read_u32(aad_np, "dlg,micbias-pulse-time",
568+
&fw_val32) >= 0)
569+
aad_pdata->micbias_pulse_time = fw_val32;
568570

569-
if (of_property_read_u32(aad_np, "dlg,btn-cfg", &of_val32) >= 0)
570-
aad_pdata->btn_cfg = da7219_aad_of_btn_cfg(codec, of_val32);
571+
if (fwnode_property_read_u32(aad_np, "dlg,btn-cfg", &fw_val32) >= 0)
572+
aad_pdata->btn_cfg = da7219_aad_fw_btn_cfg(codec, fw_val32);
571573
else
572574
aad_pdata->btn_cfg = DA7219_AAD_BTN_CFG_10MS;
573575

574-
if (of_property_read_u32(aad_np, "dlg,mic-det-thr", &of_val32) >= 0)
576+
if (fwnode_property_read_u32(aad_np, "dlg,mic-det-thr", &fw_val32) >= 0)
575577
aad_pdata->mic_det_thr =
576-
da7219_aad_of_mic_det_thr(codec, of_val32);
578+
da7219_aad_fw_mic_det_thr(codec, fw_val32);
577579
else
578580
aad_pdata->mic_det_thr = DA7219_AAD_MIC_DET_THR_500_OHMS;
579581

580-
if (of_property_read_u32(aad_np, "dlg,jack-ins-deb", &of_val32) >= 0)
582+
if (fwnode_property_read_u32(aad_np, "dlg,jack-ins-deb", &fw_val32) >= 0)
581583
aad_pdata->jack_ins_deb =
582-
da7219_aad_of_jack_ins_deb(codec, of_val32);
584+
da7219_aad_fw_jack_ins_deb(codec, fw_val32);
583585
else
584586
aad_pdata->jack_ins_deb = DA7219_AAD_JACK_INS_DEB_20MS;
585587

586-
if (!of_property_read_string(aad_np, "dlg,jack-det-rate", &of_str))
588+
if (!fwnode_property_read_string(aad_np, "dlg,jack-det-rate", &fw_str))
587589
aad_pdata->jack_det_rate =
588-
da7219_aad_of_jack_det_rate(codec, of_str);
590+
da7219_aad_fw_jack_det_rate(codec, fw_str);
589591
else
590592
aad_pdata->jack_det_rate = DA7219_AAD_JACK_DET_RATE_256_512MS;
591593

592-
if (of_property_read_u32(aad_np, "dlg,jack-rem-deb", &of_val32) >= 0)
594+
if (fwnode_property_read_u32(aad_np, "dlg,jack-rem-deb", &fw_val32) >= 0)
593595
aad_pdata->jack_rem_deb =
594-
da7219_aad_of_jack_rem_deb(codec, of_val32);
596+
da7219_aad_fw_jack_rem_deb(codec, fw_val32);
595597
else
596598
aad_pdata->jack_rem_deb = DA7219_AAD_JACK_REM_DEB_1MS;
597599

598-
if (of_property_read_u32(aad_np, "dlg,a-d-btn-thr", &of_val32) >= 0)
599-
aad_pdata->a_d_btn_thr = (u8) of_val32;
600+
if (fwnode_property_read_u32(aad_np, "dlg,a-d-btn-thr", &fw_val32) >= 0)
601+
aad_pdata->a_d_btn_thr = (u8) fw_val32;
600602
else
601603
aad_pdata->a_d_btn_thr = 0xA;
602604

603-
if (of_property_read_u32(aad_np, "dlg,d-b-btn-thr", &of_val32) >= 0)
604-
aad_pdata->d_b_btn_thr = (u8) of_val32;
605+
if (fwnode_property_read_u32(aad_np, "dlg,d-b-btn-thr", &fw_val32) >= 0)
606+
aad_pdata->d_b_btn_thr = (u8) fw_val32;
605607
else
606608
aad_pdata->d_b_btn_thr = 0x16;
607609

608-
if (of_property_read_u32(aad_np, "dlg,b-c-btn-thr", &of_val32) >= 0)
609-
aad_pdata->b_c_btn_thr = (u8) of_val32;
610+
if (fwnode_property_read_u32(aad_np, "dlg,b-c-btn-thr", &fw_val32) >= 0)
611+
aad_pdata->b_c_btn_thr = (u8) fw_val32;
610612
else
611613
aad_pdata->b_c_btn_thr = 0x21;
612614

613-
if (of_property_read_u32(aad_np, "dlg,c-mic-btn-thr", &of_val32) >= 0)
614-
aad_pdata->c_mic_btn_thr = (u8) of_val32;
615+
if (fwnode_property_read_u32(aad_np, "dlg,c-mic-btn-thr", &fw_val32) >= 0)
616+
aad_pdata->c_mic_btn_thr = (u8) fw_val32;
615617
else
616618
aad_pdata->c_mic_btn_thr = 0x3E;
617619

618-
if (of_property_read_u32(aad_np, "dlg,btn-avg", &of_val32) >= 0)
619-
aad_pdata->btn_avg = da7219_aad_of_btn_avg(codec, of_val32);
620+
if (fwnode_property_read_u32(aad_np, "dlg,btn-avg", &fw_val32) >= 0)
621+
aad_pdata->btn_avg = da7219_aad_fw_btn_avg(codec, fw_val32);
620622
else
621623
aad_pdata->btn_avg = DA7219_AAD_BTN_AVG_2;
622624

623-
if (of_property_read_u32(aad_np, "dlg,adc-1bit-rpt", &of_val32) >= 0)
625+
if (fwnode_property_read_u32(aad_np, "dlg,adc-1bit-rpt", &fw_val32) >= 0)
624626
aad_pdata->adc_1bit_rpt =
625-
da7219_aad_of_adc_1bit_rpt(codec, of_val32);
627+
da7219_aad_fw_adc_1bit_rpt(codec, fw_val32);
626628
else
627629
aad_pdata->adc_1bit_rpt = DA7219_AAD_ADC_1BIT_RPT_1;
628630

629-
out:
630-
of_node_put(aad_np);
631-
632631
return aad_pdata;
633632
}
634633

@@ -769,9 +768,9 @@ int da7219_aad_init(struct snd_soc_codec *codec)
769768
da7219->aad = da7219_aad;
770769
da7219_aad->codec = codec;
771770

772-
/* Handle any DT/platform data */
773-
if ((codec->dev->of_node) && (da7219->pdata))
774-
da7219->pdata->aad_pdata = da7219_aad_of_to_pdata(codec);
771+
/* Handle any DT/ACPI/platform data */
772+
if (da7219->pdata && !da7219->pdata->aad_pdata)
773+
da7219->pdata->aad_pdata = da7219_aad_fw_to_pdata(codec);
775774

776775
da7219_aad_handle_pdata(codec);
777776

sound/soc/codecs/da7219.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <linux/clk.h>
1616
#include <linux/i2c.h>
1717
#include <linux/of_device.h>
18+
#include <linux/property.h>
1819
#include <linux/regmap.h>
1920
#include <linux/slab.h>
2021
#include <linux/pm.h>
@@ -1418,7 +1419,7 @@ static struct snd_soc_dai_driver da7219_dai = {
14181419

14191420

14201421
/*
1421-
* DT
1422+
* DT/ACPI
14221423
*/
14231424

14241425
static const struct of_device_id da7219_of_match[] = {
@@ -1434,7 +1435,7 @@ static const struct acpi_device_id da7219_acpi_match[] = {
14341435
MODULE_DEVICE_TABLE(acpi, da7219_acpi_match);
14351436

14361437
static enum da7219_micbias_voltage
1437-
da7219_of_micbias_lvl(struct snd_soc_codec *codec, u32 val)
1438+
da7219_fw_micbias_lvl(struct device *dev, u32 val)
14381439
{
14391440
switch (val) {
14401441
case 1600:
@@ -1450,13 +1451,13 @@ static enum da7219_micbias_voltage
14501451
case 2600:
14511452
return DA7219_MICBIAS_2_6V;
14521453
default:
1453-
dev_warn(codec->dev, "Invalid micbias level");
1454+
dev_warn(dev, "Invalid micbias level");
14541455
return DA7219_MICBIAS_2_2V;
14551456
}
14561457
}
14571458

14581459
static enum da7219_mic_amp_in_sel
1459-
da7219_of_mic_amp_in_sel(struct snd_soc_codec *codec, const char *str)
1460+
da7219_fw_mic_amp_in_sel(struct device *dev, const char *str)
14601461
{
14611462
if (!strcmp(str, "diff")) {
14621463
return DA7219_MIC_AMP_IN_SEL_DIFF;
@@ -1465,29 +1466,29 @@ static enum da7219_mic_amp_in_sel
14651466
} else if (!strcmp(str, "se_n")) {
14661467
return DA7219_MIC_AMP_IN_SEL_SE_N;
14671468
} else {
1468-
dev_warn(codec->dev, "Invalid mic input type selection");
1469+
dev_warn(dev, "Invalid mic input type selection");
14691470
return DA7219_MIC_AMP_IN_SEL_DIFF;
14701471
}
14711472
}
14721473

1473-
static struct da7219_pdata *da7219_of_to_pdata(struct snd_soc_codec *codec)
1474+
static struct da7219_pdata *da7219_fw_to_pdata(struct snd_soc_codec *codec)
14741475
{
1475-
struct device_node *np = codec->dev->of_node;
1476+
struct device *dev = codec->dev;
14761477
struct da7219_pdata *pdata;
14771478
const char *of_str;
14781479
u32 of_val32;
14791480

1480-
pdata = devm_kzalloc(codec->dev, sizeof(*pdata), GFP_KERNEL);
1481+
pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
14811482
if (!pdata)
14821483
return NULL;
14831484

1484-
if (of_property_read_u32(np, "dlg,micbias-lvl", &of_val32) >= 0)
1485-
pdata->micbias_lvl = da7219_of_micbias_lvl(codec, of_val32);
1485+
if (device_property_read_u32(dev, "dlg,micbias-lvl", &of_val32) >= 0)
1486+
pdata->micbias_lvl = da7219_fw_micbias_lvl(dev, of_val32);
14861487
else
14871488
pdata->micbias_lvl = DA7219_MICBIAS_2_2V;
14881489

1489-
if (!of_property_read_string(np, "dlg,mic-amp-in-sel", &of_str))
1490-
pdata->mic_amp_in_sel = da7219_of_mic_amp_in_sel(codec, of_str);
1490+
if (!device_property_read_string(dev, "dlg,mic-amp-in-sel", &of_str))
1491+
pdata->mic_amp_in_sel = da7219_fw_mic_amp_in_sel(dev, of_str);
14911492
else
14921493
pdata->mic_amp_in_sel = DA7219_MIC_AMP_IN_SEL_DIFF;
14931494

@@ -1662,11 +1663,10 @@ static int da7219_probe(struct snd_soc_codec *codec)
16621663
break;
16631664
}
16641665

1665-
/* Handle DT/Platform data */
1666-
if (codec->dev->of_node)
1667-
da7219->pdata = da7219_of_to_pdata(codec);
1668-
else
1669-
da7219->pdata = dev_get_platdata(codec->dev);
1666+
/* Handle DT/ACPI/Platform data */
1667+
da7219->pdata = dev_get_platdata(codec->dev);
1668+
if (!da7219->pdata)
1669+
da7219->pdata = da7219_fw_to_pdata(codec);
16701670

16711671
da7219_handle_pdata(codec);
16721672

0 commit comments

Comments
 (0)