mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
ACPI / LPSS: not using UART RTS override with Auto Flow Control
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 <heikki.krogerus@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
871dd05c05
commit
1f47a77c4e
@ -83,18 +83,26 @@ struct lpss_private_data {
|
||||
u32 prv_reg_ctx[LPSS_PRV_REG_COUNT];
|
||||
};
|
||||
|
||||
/* 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);
|
||||
val = readl(pdata->mmio_base + offset);
|
||||
writel(val | 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 + 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 void byt_i2c_setup(struct lpss_private_data *pdata)
|
||||
|
Loading…
Reference in New Issue
Block a user