From: Stephen Boyd Date: Wed, 21 Aug 2013 06:48:04 +0000 (-0700) Subject: msm_serial: Add support for non-GSBI UARTDM devices X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c3b5d3be7e354d4e05ae433b9c733330c65b8b34;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git msm_serial: Add support for non-GSBI UARTDM devices Not all UARTDM hardware is part of a GSBI complex. Add support for these devices and fix a bug where we assumed uartdm meant the hardware was part of a GSBI complex. Cc: David Brown Signed-off-by: Stephen Boyd Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c index 67894354dc2a..5a7503986d7d 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -678,7 +678,7 @@ static void msm_config_port(struct uart_port *port, int flags) if (ret) return; } - if (msm_port->is_uartdm) + if (msm_port->gsbi_base) writel_relaxed(GSBI_PROTOCOL_UART, msm_port->gsbi_base + GSBI_CONTROL); } @@ -868,6 +868,11 @@ static struct uart_driver msm_uart_driver = { static atomic_t msm_uart_next_id = ATOMIC_INIT(0); +static const struct of_device_id msm_uartdm_table[] = { + { .compatible = "qcom,msm-uartdm" }, + { } +}; + static int __init msm_serial_probe(struct platform_device *pdev) { struct msm_port *msm_port; @@ -887,7 +892,7 @@ static int __init msm_serial_probe(struct platform_device *pdev) port->dev = &pdev->dev; msm_port = UART_TO_MSM(port); - if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) + if (of_match_device(msm_uartdm_table, &pdev->dev)) msm_port->is_uartdm = 1; else msm_port->is_uartdm = 0; @@ -934,6 +939,7 @@ static int msm_serial_remove(struct platform_device *pdev) static struct of_device_id msm_match_table[] = { { .compatible = "qcom,msm-uart" }, + { .compatible = "qcom,msm-uartdm" }, {} };