Message ID | 20200123124802.24862-2-rojay@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tty: serial: qcom_geni_serial: Configure UART_IO_MACRO_CTRL register | expand |
On Thu, Jan 23, 2020 at 06:18:02PM +0530, Roja Rani Yarubandi wrote: > Configure UART_IO_MACRO_CTRL register if UART lines are swapped. > > Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 6 ++++++ > 1 file changed, 6 insertions(+) What changed from v1? Always put that below the --- line. And no need for a 0/1 email for a single patch, just put everything in the patch changelog itself as it is standalone. thanks, greg k-h
On Thu 23 Jan 04:48 PST 2020, Roja Rani Yarubandi wrote: > Configure UART_IO_MACRO_CTRL register if UART lines are swapped. > > Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index ff63728a95f4..24b862937c1e 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -24,6 +24,7 @@ > > /* UART specific GENI registers */ > #define SE_UART_LOOPBACK_CFG 0x22c > +#define SE_UART_IO_MACRO_CTRL 0x240 > #define SE_UART_TX_TRANS_CFG 0x25c > #define SE_UART_TX_WORD_LEN 0x268 > #define SE_UART_TX_STOP_BIT_LEN 0x26c > @@ -1260,6 +1261,7 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) > int irq; > bool console = false; > struct uart_driver *drv; > + u32 val; > > if (of_device_is_compatible(pdev->dev.of_node, "qcom,geni-debug-uart")) > console = true; > @@ -1309,6 +1311,10 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) > return irq; > uport->irq = irq; > > + ret = of_property_read_u32(pdev->dev.of_node, "qcom,pin_inverse", &val); This needs to be documented in the DT binding document. And I assume it's better suited as a bool property to be read using of_property_read_bool(). Also avoid '_' in property names and make it a '-'. Regards, Bjorn > + if (!ret) > + writel(val, uport->membase + SE_UART_IO_MACRO_CTRL); > + > irq_set_status_flags(uport->irq, IRQ_NOAUTOEN); > ret = devm_request_irq(uport->dev, uport->irq, qcom_geni_serial_isr, > IRQF_TRIGGER_HIGH, port->name, uport); > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member > of the Code Aurora Forum, hosted by The Linux Foundation >
Hi Roja, On Thu, Jan 23, 2020 at 06:18:02PM +0530, Roja Rani Yarubandi wrote: > subject: tty: serial: qcom_geni_serial: Configure UART_IO_MACRO_CTRL register Something like 'Support pin swapping' would be more useful. > Configure UART_IO_MACRO_CTRL register if UART lines are swapped. > > Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index ff63728a95f4..24b862937c1e 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -24,6 +24,7 @@ > > /* UART specific GENI registers */ > #define SE_UART_LOOPBACK_CFG 0x22c > +#define SE_UART_IO_MACRO_CTRL 0x240 > #define SE_UART_TX_TRANS_CFG 0x25c > #define SE_UART_TX_WORD_LEN 0x268 > #define SE_UART_TX_STOP_BIT_LEN 0x26c > @@ -1260,6 +1261,7 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) > int irq; > bool console = false; > struct uart_driver *drv; > + u32 val; > > if (of_device_is_compatible(pdev->dev.of_node, "qcom,geni-debug-uart")) > console = true; > @@ -1309,6 +1311,10 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) > return irq; > uport->irq = irq; > > + ret = of_property_read_u32(pdev->dev.of_node, "qcom,pin_inverse", &val); > + if (!ret) > + writel(val, uport->membase + SE_UART_IO_MACRO_CTRL); > + Which pins are/can be inversed only RX/TX or also CTS/RTS? If both pairs can be inversed individually it would be nice to support that. As Bjorn commented, it's probably better to have boolean properties and keep the magic values in the driver.
diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c index ff63728a95f4..24b862937c1e 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -24,6 +24,7 @@ /* UART specific GENI registers */ #define SE_UART_LOOPBACK_CFG 0x22c +#define SE_UART_IO_MACRO_CTRL 0x240 #define SE_UART_TX_TRANS_CFG 0x25c #define SE_UART_TX_WORD_LEN 0x268 #define SE_UART_TX_STOP_BIT_LEN 0x26c @@ -1260,6 +1261,7 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) int irq; bool console = false; struct uart_driver *drv; + u32 val; if (of_device_is_compatible(pdev->dev.of_node, "qcom,geni-debug-uart")) console = true; @@ -1309,6 +1311,10 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) return irq; uport->irq = irq; + ret = of_property_read_u32(pdev->dev.of_node, "qcom,pin_inverse", &val); + if (!ret) + writel(val, uport->membase + SE_UART_IO_MACRO_CTRL); + irq_set_status_flags(uport->irq, IRQ_NOAUTOEN); ret = devm_request_irq(uport->dev, uport->irq, qcom_geni_serial_isr, IRQF_TRIGGER_HIGH, port->name, uport);
Configure UART_IO_MACRO_CTRL register if UART lines are swapped. Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org> --- drivers/tty/serial/qcom_geni_serial.c | 6 ++++++ 1 file changed, 6 insertions(+)