Skip to content

Commit

Permalink
serial/imx: let probing fail for the dt case without a valid alias
Browse files Browse the repository at this point in the history
When the uart device is instantiated by dt but dt doesn't provide an
alias then better let probing fail instead of falling back to an
unrelated device id used for the line number and no platform data.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Uwe Kleine-König authored and Greg Kroah-Hartman committed Jan 5, 2012
1 parent a197a19 commit 20bb809
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions drivers/tty/serial/imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1302,6 +1302,10 @@ static int serial_imx_resume(struct platform_device *dev)
}

#ifdef CONFIG_OF
/*
* This function returns 1 iff pdev isn't a device instatiated by dt, 0 iff it
* could successfully get all information from dt or a negative errno.
*/
static int serial_imx_probe_dt(struct imx_port *sport,
struct platform_device *pdev)
{
Expand All @@ -1311,7 +1315,8 @@ static int serial_imx_probe_dt(struct imx_port *sport,
int ret;

if (!np)
return -ENODEV;
/* no device tree device */
return 1;

ret = of_alias_get_id(np, "serial");
if (ret < 0) {
Expand All @@ -1334,7 +1339,7 @@ static int serial_imx_probe_dt(struct imx_port *sport,
static inline int serial_imx_probe_dt(struct imx_port *sport,
struct platform_device *pdev)
{
return -ENODEV;
return 1;
}
#endif

Expand Down Expand Up @@ -1369,8 +1374,10 @@ static int serial_imx_probe(struct platform_device *pdev)
return -ENOMEM;

ret = serial_imx_probe_dt(sport, pdev);
if (ret == -ENODEV)
if (ret > 0)
serial_imx_probe_pdata(sport, pdev);
else if (ret < 0)
goto free;

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
Expand Down

0 comments on commit 20bb809

Please sign in to comment.