From: Heikki Krogerus <[email protected]>

Adding a check for UART Auto Flow Control feature and only
enabling the RTS override when it's not supported. RTS
override is not needed when Auto Flow Control is used and
they shouldn't be used together.

Signed-off-by: Heikki Krogerus <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
(cherry picked from commit 1f47a77c4e4951f141bf20fe7f7c5d9438ea1663)

Signed-off-by: Ng, Wei Tee <[email protected]>
---
 drivers/acpi/acpi_lpss.c |   22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 8c2bae9..7e038be 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -67,18 +67,26 @@ struct lpss_private_data {
        const struct lpss_device_desc *dev_desc;
 };
 
+/* UART Component Parameter Register */
+#define LPSS_UART_CPR                  0xF4
+#define LPSS_UART_CPR_AFCE             BIT(4)
+
 static void lpss_uart_setup(struct lpss_private_data *pdata)
 {
        unsigned int offset;
-       u32 reg;
+       u32 val;
 
        offset = pdata->dev_desc->prv_offset + LPSS_TX_INT;
-       reg = readl(pdata->mmio_base + offset);
-       writel(reg | LPSS_TX_INT_MASK, pdata->mmio_base + offset);
-
-       offset = pdata->dev_desc->prv_offset + LPSS_GENERAL;
-       reg = readl(pdata->mmio_base + offset);
-       writel(reg | LPSS_GENERAL_UART_RTS_OVRD, pdata->mmio_base + offset);
+       val = readl(pdata->mmio_base + offset);
+       writel(val | LPSS_TX_INT_MASK, pdata->mmio_base + offset);
+
+       val = readl(pdata->mmio_base + LPSS_UART_CPR);
+       if (!(val & LPSS_UART_CPR_AFCE)) {
+               offset = pdata->dev_desc->prv_offset + LPSS_GENERAL;
+               val = readl(pdata->mmio_base + offset);
+               val |= LPSS_GENERAL_UART_RTS_OVRD;
+               writel(val, pdata->mmio_base + offset);
+       }
 }
 
 static struct lpss_device_desc lpt_dev_desc = {
-- 
1.7.9.5

-- 
_______________________________________________
linux-yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to