Messages in this thread Patch in this message | | | Date | Tue, 01 Oct 2013 08:04:09 +0900 | From | Chanwoo Choi <> | Subject | Re: [PATCH] extcon: arizona: Get pdata from arizona structure not device |
| |
On 09/30/2013 06:52 PM, Charles Keepax wrote: > On Mon, Sep 30, 2013 at 08:37:30AM +0900, Chanwoo Choi wrote: >> No, extcon-arizona driver don't currently support DT to get platform data. >> I cannot find some dt function to parse data from dts file. >> You have to implement extcon-arizona driver by using DT binding style >> to get platform data. I think this patch is not necessary. > > Currently the Arizona MFD driver reads the device tree > information and populates the pdata structure, this happens in > drivers/mfd/arizona-core.c. Then the various drivers just use the > pdata as normal. > > Admittedly, at the moment we don't parse any data for the extcon > driver but without this patch we will attempt to use a NULL > pointer on device tree systems. > > I would also be happy to implement this as a NULL check on the > pdata when we use it if that is preferable? But since we have the > cached pdata seems we might as well use it. >
I find below pdata list for extcon-arizona driver. But, drivers/mfd/arizona-core.c don't parse dt data for below pdata list of extcon-arizona. Did you test this patch for extcon-arizona operation?
arizona->pdata.micd_pol_gpio arizona->pdata.micd_force_micbias arizona->pdata.hpdet_id_gpio arizona->pdata.hpdet_acc_id arizona->pdata.hpdet_acc_id_line arizona->pdata.micd_detect_debounce arizona->pdata.jd_gpio5 arizona->pdata.micd_timeout arizona->pdata.num_micd_configs arizona->pdata.micd_configs arizona->pdata.micd_bias_start_time arizona->pdata.micd_rate arizona->pdata.micd_dbtime arizona->pdata.num_micd_ranges ...
If you fix NULL pointer error about pdata, I think only that extcon-arizona modify it as following:
diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c index e557130..3429906 100644 --- a/drivers/extcon/extcon-arizona.c +++ b/drivers/extcon/extcon-arizona.c @@ -1088,6 +1088,10 @@ static int arizona_extcon_probe(struct platform_device *pdev) return -EPROBE_DEFER; pdata = dev_get_platdata(arizona->dev); + if (!pdata) { + dev_err(&pdev->dev, "Failed to get platform data\n"); + return -EINVAL; + } info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); if (!info) { Thanks, Chanwoo Choi
| |