|
@@ -1275,11 +1275,18 @@ static inline struct s3c24xx_serial_drv_data *s3c24xx_get_driver_data(
|
|
|
static int s3c24xx_serial_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
struct s3c24xx_uart_port *ourport;
|
|
|
+ int index = probe_index;
|
|
|
int ret;
|
|
|
|
|
|
- dbg("s3c24xx_serial_probe(%p) %d\n", pdev, probe_index);
|
|
|
+ if (pdev->dev.of_node) {
|
|
|
+ ret = of_alias_get_id(pdev->dev.of_node, "serial");
|
|
|
+ if (ret >= 0)
|
|
|
+ index = ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ dbg("s3c24xx_serial_probe(%p) %d\n", pdev, index);
|
|
|
|
|
|
- ourport = &s3c24xx_serial_ports[probe_index];
|
|
|
+ ourport = &s3c24xx_serial_ports[index];
|
|
|
|
|
|
ourport->drv_data = s3c24xx_get_driver_data(pdev);
|
|
|
if (!ourport->drv_data) {
|
|
@@ -1295,7 +1302,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
|
|
|
|
|
|
ourport->port.fifosize = (ourport->info->fifosize) ?
|
|
|
ourport->info->fifosize :
|
|
|
- ourport->drv_data->fifosize[probe_index];
|
|
|
+ ourport->drv_data->fifosize[index];
|
|
|
|
|
|
probe_index++;
|
|
|
|