Re: [PATCH v3] USB: PHY: Re-organize Tegra USB PHY driver

From: Stephen Warren
Date: Fri Sep 21 2012 - 12:14:59 EST


On 09/21/2012 07:09 AM, ABRAHAM, KISHON VIJAY wrote:
> Hi,
>
> On Fri, Sep 21, 2012 at 5:50 PM, Venu Byravarasu <vbyravarasu@xxxxxxxxxx> wrote:
>> NVIDIA produces several Tegra SoCs viz Tegra20, Tegra30 etc.
>> In order to support USB PHY drivers on these SoCs, existing
>> PHY driver is split into SoC agnostic common USB PHY driver
>> and Tegra20-specific USB phy driver. This will facilitate
>> easy addition and deletion of phy drivers for Tegra SoCs.

>> @@ -618,6 +618,9 @@ static int tegra_ehci_probe(struct platform_device *pdev)
...
>> pdata = pdev->dev.platform_data;
>> if (!pdata) {

Some missing lines of context are:

dev_err(&pdev->dev, "Platform data missing\n");
return -EINVAL;
}

...
>> + params.mode = TEGRA_USB_PHY_MODE_HOST;
>> + params.config = pdata->phy_config;
>
> I fail to understand how pdata is not NULL in dt boot. I know i've
> already given this comment and you replied that you dint see any
> crash. But I'd like to know where and how pdata gets populated.

In practice, the platform uses AUXDATA to provide platform data to the
driver even when it's instantiated using device tree; see
arch/arm/mach-tegra/board-dt-tegra20.c variables tegra_ehci*_pdata and
tegra20_auxdata_lookup[].

In the slightly (very very slightly, hopefully) longer term, I would
like to completely remove the AUXDATA setup from board-dt-tegra20.c;
tegra_ehci_probe() should do something like:

pdata = pdev->dev.platform_data
if (!pdata)
pdata = parse_pdata_from_dt();
/* user didn't specify any in DT either */
if (!pdata)
pdata = default_pdata_for_port();

... where perhaps the use of defaults could be folded into
parse_pdata_from_dt().
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/