All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] serial: sprd: Remove unused structure
@ 2018-08-11  1:34 Baolin Wang
  2018-08-11  1:34 ` [PATCH 2/5] serial: sprd: Use readable macros instead of magic number Baolin Wang
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Baolin Wang @ 2018-08-11  1:34 UTC (permalink / raw)
  To: gregkh, jslaby
  Cc: orsonzhai, baolin.wang, zhang.lyra, broonie, linux-serial, linux-kernel

Remove the unused reg_backup structure.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 drivers/tty/serial/sprd_serial.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 828f114..1b0e3fb 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -95,19 +95,8 @@
 #define SPRD_IMSR_BREAK_DETECT		BIT(7)
 #define SPRD_IMSR_TIMEOUT		BIT(13)
 
-struct reg_backup {
-	u32 ien;
-	u32 ctrl0;
-	u32 ctrl1;
-	u32 ctrl2;
-	u32 clkd0;
-	u32 clkd1;
-	u32 dspwait;
-};
-
 struct sprd_uart_port {
 	struct uart_port port;
-	struct reg_backup reg_bak;
 	char name[16];
 };
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/5] serial: sprd: Use readable macros instead of magic number
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
@ 2018-08-11  1:34 ` Baolin Wang
  2018-09-04  6:54   ` Chunyan Zhang
  2018-08-11  1:34 ` [PATCH 3/5] serial: sprd: Remove unnecessary resource validation Baolin Wang
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-08-11  1:34 UTC (permalink / raw)
  To: gregkh, jslaby
  Cc: orsonzhai, baolin.wang, zhang.lyra, broonie, linux-serial, linux-kernel

Define readable macros instead of magic number to make code more readable.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 drivers/tty/serial/sprd_serial.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 1b0e3fb..e18d8af 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -45,6 +45,8 @@
 
 /* data number in TX and RX fifo */
 #define SPRD_STS1		0x000C
+#define SPRD_RX_FIFO_CNT_MASK	GENMASK(7, 0)
+#define SPRD_TX_FIFO_CNT_MASK	GENMASK(15, 8)
 
 /* interrupt enable register and its BITs */
 #define SPRD_IEN		0x0010
@@ -82,11 +84,15 @@
 /* fifo threshold register */
 #define SPRD_CTL2		0x0020
 #define THLD_TX_EMPTY	0x40
+#define THLD_TX_EMPTY_SHIFT	8
 #define THLD_RX_FULL	0x40
 
 /* config baud rate register */
 #define SPRD_CLKD0		0x0024
+#define SPRD_CLKD0_MASK		GENMASK(15, 0)
 #define SPRD_CLKD1		0x0028
+#define SPRD_CLKD1_MASK		GENMASK(20, 16)
+#define SPRD_CLKD1_SHIFT	16
 
 /* interrupt mask status register */
 #define SPRD_IMSR			0x002C
@@ -115,7 +121,7 @@ static inline void serial_out(struct uart_port *port, int offset, int value)
 
 static unsigned int sprd_tx_empty(struct uart_port *port)
 {
-	if (serial_in(port, SPRD_STS1) & 0xff00)
+	if (serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK)
 		return 0;
 	else
 		return TIOCSER_TEMT;
@@ -213,7 +219,8 @@ static inline void sprd_rx(struct uart_port *port)
 	struct tty_port *tty = &port->state->port;
 	unsigned int ch, flag, lsr, max_count = SPRD_TIMEOUT;
 
-	while ((serial_in(port, SPRD_STS1) & 0x00ff) && max_count--) {
+	while ((serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK) &&
+	       max_count--) {
 		lsr = serial_in(port, SPRD_LSR);
 		ch = serial_in(port, SPRD_RXD);
 		flag = TTY_NORMAL;
@@ -303,16 +310,17 @@ static int sprd_startup(struct uart_port *port)
 	struct sprd_uart_port *sp;
 	unsigned long flags;
 
-	serial_out(port, SPRD_CTL2, ((THLD_TX_EMPTY << 8) | THLD_RX_FULL));
+	serial_out(port, SPRD_CTL2,
+		   THLD_TX_EMPTY << THLD_TX_EMPTY_SHIFT | THLD_RX_FULL);
 
 	/* clear rx fifo */
 	timeout = SPRD_TIMEOUT;
-	while (timeout-- && serial_in(port, SPRD_STS1) & 0x00ff)
+	while (timeout-- && serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK)
 		serial_in(port, SPRD_RXD);
 
 	/* clear tx fifo */
 	timeout = SPRD_TIMEOUT;
-	while (timeout-- && serial_in(port, SPRD_STS1) & 0xff00)
+	while (timeout-- && serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK)
 		cpu_relax();
 
 	/* clear interrupt */
@@ -433,10 +441,11 @@ static void sprd_set_termios(struct uart_port *port,
 	}
 
 	/* clock divider bit0~bit15 */
-	serial_out(port, SPRD_CLKD0, quot & 0xffff);
+	serial_out(port, SPRD_CLKD0, quot & SPRD_CLKD0_MASK);
 
 	/* clock divider bit16~bit20 */
-	serial_out(port, SPRD_CLKD1, (quot & 0x1f0000) >> 16);
+	serial_out(port, SPRD_CLKD1,
+		   (quot & SPRD_CLKD1_MASK) >> SPRD_CLKD1_SHIFT);
 	serial_out(port, SPRD_LCR, lcr);
 	fc |= RX_TOUT_THLD_DEF | RX_HFC_THLD_DEF;
 	serial_out(port, SPRD_CTL1, fc);
@@ -510,7 +519,7 @@ static void wait_for_xmitr(struct uart_port *port)
 		if (--tmout == 0)
 			break;
 		udelay(1);
-	} while (status & 0xff00);
+	} while (status & SPRD_TX_FIFO_CNT_MASK);
 }
 
 static void sprd_console_putchar(struct uart_port *port, int ch)
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/5] serial: sprd: Remove unnecessary resource validation
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
  2018-08-11  1:34 ` [PATCH 2/5] serial: sprd: Use readable macros instead of magic number Baolin Wang
@ 2018-08-11  1:34 ` Baolin Wang
  2018-09-04  6:55   ` Chunyan Zhang
  2018-08-11  1:34 ` [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int' Baolin Wang
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-08-11  1:34 UTC (permalink / raw)
  To: gregkh, jslaby
  Cc: orsonzhai, baolin.wang, zhang.lyra, broonie, linux-serial, linux-kernel

The devm_ioremap_resource() will valid the resources, thus remove the
unnecessary resource validation in the driver.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 drivers/tty/serial/sprd_serial.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index e18d8af..03b0cd4 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -710,15 +710,12 @@ static int sprd_probe(struct platform_device *pdev)
 		up->uartclk = clk_get_rate(clk);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "not provide mem resource\n");
-		return -ENODEV;
-	}
-	up->mapbase = res->start;
 	up->membase = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(up->membase))
 		return PTR_ERR(up->membase);
 
+	up->mapbase = res->start;
+
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
 		dev_err(&pdev->dev, "not provide irq resource: %d\n", irq);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int'
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
  2018-08-11  1:34 ` [PATCH 2/5] serial: sprd: Use readable macros instead of magic number Baolin Wang
  2018-08-11  1:34 ` [PATCH 3/5] serial: sprd: Remove unnecessary resource validation Baolin Wang
@ 2018-08-11  1:34 ` Baolin Wang
  2018-09-04  6:55   ` Chunyan Zhang
  2018-08-11  1:34 ` [PATCH 5/5] serial: sprd: Fix the indentation issue Baolin Wang
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-08-11  1:34 UTC (permalink / raw)
  To: gregkh, jslaby
  Cc: orsonzhai, baolin.wang, zhang.lyra, broonie, linux-serial, linux-kernel

The register offset value should be 'unsigned int' type.

Moreover, prefer 'unsigned int' to bare use of 'unsigned'.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 drivers/tty/serial/sprd_serial.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 03b0cd4..8d5c9cd 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -109,12 +109,14 @@ struct sprd_uart_port {
 static struct sprd_uart_port *sprd_port[UART_NR_MAX];
 static int sprd_ports_num;
 
-static inline unsigned int serial_in(struct uart_port *port, int offset)
+static inline unsigned int serial_in(struct uart_port *port,
+				     unsigned int offset)
 {
 	return readl_relaxed(port->membase + offset);
 }
 
-static inline void serial_out(struct uart_port *port, int offset, int value)
+static inline void serial_out(struct uart_port *port, unsigned int offset,
+			      int value)
 {
 	writel_relaxed(value, port->membase + offset);
 }
@@ -598,8 +600,7 @@ static void sprd_putc(struct uart_port *port, int c)
 	writeb(c, port->membase + SPRD_TXD);
 }
 
-static void sprd_early_write(struct console *con, const char *s,
-				    unsigned n)
+static void sprd_early_write(struct console *con, const char *s, unsigned int n)
 {
 	struct earlycon_device *dev = con->data;
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 5/5] serial: sprd: Fix the indentation issue
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
                   ` (2 preceding siblings ...)
  2018-08-11  1:34 ` [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int' Baolin Wang
@ 2018-08-11  1:34 ` Baolin Wang
  2018-09-04  6:57   ` Chunyan Zhang
  2018-09-04  5:34 ` [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
  2018-09-04  6:52 ` Chunyan Zhang
  5 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-08-11  1:34 UTC (permalink / raw)
  To: gregkh, jslaby
  Cc: orsonzhai, baolin.wang, zhang.lyra, broonie, linux-serial, linux-kernel

Make the macros' definition and code have the same correct indentation.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 drivers/tty/serial/sprd_serial.c | 46 +++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 8d5c9cd..4287ca3 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -68,24 +68,24 @@
 #define SPRD_LCR_DATA_LEN6	0x4
 #define SPRD_LCR_DATA_LEN7	0x8
 #define SPRD_LCR_DATA_LEN8	0xc
-#define SPRD_LCR_PARITY	(BIT(0) | BIT(1))
+#define SPRD_LCR_PARITY		(BIT(0) | BIT(1))
 #define SPRD_LCR_PARITY_EN	0x2
 #define SPRD_LCR_EVEN_PAR	0x0
 #define SPRD_LCR_ODD_PAR	0x1
 
 /* control register 1 */
-#define SPRD_CTL1			0x001C
+#define SPRD_CTL1		0x001C
 #define RX_HW_FLOW_CTL_THLD	BIT(6)
 #define RX_HW_FLOW_CTL_EN	BIT(7)
 #define TX_HW_FLOW_CTL_EN	BIT(8)
 #define RX_TOUT_THLD_DEF	0x3E00
-#define RX_HFC_THLD_DEF	0x40
+#define RX_HFC_THLD_DEF		0x40
 
 /* fifo threshold register */
 #define SPRD_CTL2		0x0020
-#define THLD_TX_EMPTY	0x40
+#define THLD_TX_EMPTY		0x40
 #define THLD_TX_EMPTY_SHIFT	8
-#define THLD_RX_FULL	0x40
+#define THLD_RX_FULL		0x40
 
 /* config baud rate register */
 #define SPRD_CLKD0		0x0024
@@ -95,11 +95,11 @@
 #define SPRD_CLKD1_SHIFT	16
 
 /* interrupt mask status register */
-#define SPRD_IMSR			0x002C
-#define SPRD_IMSR_RX_FIFO_FULL		BIT(0)
+#define SPRD_IMSR		0x002C
+#define SPRD_IMSR_RX_FIFO_FULL	BIT(0)
 #define SPRD_IMSR_TX_FIFO_EMPTY	BIT(1)
-#define SPRD_IMSR_BREAK_DETECT		BIT(7)
-#define SPRD_IMSR_TIMEOUT		BIT(13)
+#define SPRD_IMSR_BREAK_DETECT	BIT(7)
+#define SPRD_IMSR_TIMEOUT	BIT(13)
 
 struct sprd_uart_port {
 	struct uart_port port;
@@ -229,7 +229,7 @@ static inline void sprd_rx(struct uart_port *port)
 		port->icount.rx++;
 
 		if (lsr & (SPRD_LSR_BI | SPRD_LSR_PE |
-			SPRD_LSR_FE | SPRD_LSR_OE))
+			   SPRD_LSR_FE | SPRD_LSR_OE))
 			if (handle_lsr_errors(port, &lsr, &flag))
 				continue;
 		if (uart_handle_sysrq_char(port, ch))
@@ -292,8 +292,8 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)
 	if (ims & SPRD_IMSR_TIMEOUT)
 		serial_out(port, SPRD_ICLR, SPRD_ICLR_TIMEOUT);
 
-	if (ims & (SPRD_IMSR_RX_FIFO_FULL |
-		SPRD_IMSR_BREAK_DETECT | SPRD_IMSR_TIMEOUT))
+	if (ims & (SPRD_IMSR_RX_FIFO_FULL | SPRD_IMSR_BREAK_DETECT |
+		   SPRD_IMSR_TIMEOUT))
 		sprd_rx(port);
 
 	if (ims & SPRD_IMSR_TX_FIFO_EMPTY)
@@ -333,7 +333,7 @@ static int sprd_startup(struct uart_port *port)
 	sp = container_of(port, struct sprd_uart_port, port);
 	snprintf(sp->name, sizeof(sp->name), "sprd_serial%d", port->line);
 	ret = devm_request_irq(port->dev, port->irq, sprd_handle_irq,
-				IRQF_SHARED, sp->name, port);
+			       IRQF_SHARED, sp->name, port);
 	if (ret) {
 		dev_err(port->dev, "fail to request serial irq %d, ret=%d\n",
 			port->irq, ret);
@@ -361,8 +361,8 @@ static void sprd_shutdown(struct uart_port *port)
 }
 
 static void sprd_set_termios(struct uart_port *port,
-				    struct ktermios *termios,
-				    struct ktermios *old)
+			     struct ktermios *termios,
+			     struct ktermios *old)
 {
 	unsigned int baud, quot;
 	unsigned int lcr = 0, fc;
@@ -480,8 +480,7 @@ static void sprd_config_port(struct uart_port *port, int flags)
 		port->type = PORT_SPRD;
 }
 
-static int sprd_verify_port(struct uart_port *port,
-				   struct serial_struct *ser)
+static int sprd_verify_port(struct uart_port *port, struct serial_struct *ser)
 {
 	if (ser->type != PORT_SPRD)
 		return -EINVAL;
@@ -531,7 +530,7 @@ static void sprd_console_putchar(struct uart_port *port, int ch)
 }
 
 static void sprd_console_write(struct console *co, const char *s,
-				      unsigned int count)
+			       unsigned int count)
 {
 	struct uart_port *port = &sprd_port[co->index]->port;
 	int locked = 1;
@@ -594,7 +593,7 @@ static void sprd_putc(struct uart_port *port, int c)
 	unsigned int timeout = SPRD_TIMEOUT;
 
 	while (timeout-- &&
-		   !(readl(port->membase + SPRD_LSR) & SPRD_LSR_TX_OVER))
+	       !(readl(port->membase + SPRD_LSR) & SPRD_LSR_TX_OVER))
 		cpu_relax();
 
 	writeb(c, port->membase + SPRD_TXD);
@@ -607,9 +606,8 @@ static void sprd_early_write(struct console *con, const char *s, unsigned int n)
 	uart_console_write(&dev->port, s, n, sprd_putc);
 }
 
-static int __init sprd_early_console_setup(
-				struct earlycon_device *device,
-				const char *opt)
+static int __init sprd_early_console_setup(struct earlycon_device *device,
+					   const char *opt)
 {
 	if (!device->port.membase)
 		return -ENODEV;
@@ -691,8 +689,8 @@ static int sprd_probe(struct platform_device *pdev)
 
 	index = sprd_probe_dt_alias(index, &pdev->dev);
 
-	sprd_port[index] = devm_kzalloc(&pdev->dev,
-		sizeof(*sprd_port[index]), GFP_KERNEL);
+	sprd_port[index] = devm_kzalloc(&pdev->dev, sizeof(*sprd_port[index]),
+					GFP_KERNEL);
 	if (!sprd_port[index])
 		return -ENOMEM;
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/5] serial: sprd: Remove unused structure
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
                   ` (3 preceding siblings ...)
  2018-08-11  1:34 ` [PATCH 5/5] serial: sprd: Fix the indentation issue Baolin Wang
@ 2018-09-04  5:34 ` Baolin Wang
  2018-09-04  6:52 ` Chunyan Zhang
  5 siblings, 0 replies; 12+ messages in thread
From: Baolin Wang @ 2018-09-04  5:34 UTC (permalink / raw)
  To: Greg KH, jslaby
  Cc: Orson Zhai, Baolin Wang, Chunyan Zhang, Mark Brown, linux-serial, LKML

Hi,

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> Remove the unused reg_backup structure.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
> ---

Do you have any comments for this patch set? Thanks.

-- 
Baolin Wang
Best Regards

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/5] serial: sprd: Remove unused structure
  2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
                   ` (4 preceding siblings ...)
  2018-09-04  5:34 ` [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
@ 2018-09-04  6:52 ` Chunyan Zhang
  2018-09-11  6:09   ` Baolin Wang
  5 siblings, 1 reply; 12+ messages in thread
From: Chunyan Zhang @ 2018-09-04  6:52 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> Remove the unused reg_backup structure.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

> ---
>  drivers/tty/serial/sprd_serial.c | 11 -----------
>  1 file changed, 11 deletions(-)
>
> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
> index 828f114..1b0e3fb 100644
> --- a/drivers/tty/serial/sprd_serial.c
> +++ b/drivers/tty/serial/sprd_serial.c
> @@ -95,19 +95,8 @@
>  #define SPRD_IMSR_BREAK_DETECT         BIT(7)
>  #define SPRD_IMSR_TIMEOUT              BIT(13)
>
> -struct reg_backup {
> -       u32 ien;
> -       u32 ctrl0;
> -       u32 ctrl1;
> -       u32 ctrl2;
> -       u32 clkd0;
> -       u32 clkd1;
> -       u32 dspwait;
> -};
> -
>  struct sprd_uart_port {
>         struct uart_port port;
> -       struct reg_backup reg_bak;
>         char name[16];
>  };
>
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/5] serial: sprd: Use readable macros instead of magic number
  2018-08-11  1:34 ` [PATCH 2/5] serial: sprd: Use readable macros instead of magic number Baolin Wang
@ 2018-09-04  6:54   ` Chunyan Zhang
  0 siblings, 0 replies; 12+ messages in thread
From: Chunyan Zhang @ 2018-09-04  6:54 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> Define readable macros instead of magic number to make code more readable.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

> ---
>  drivers/tty/serial/sprd_serial.c | 25 +++++++++++++++++--------
>  1 file changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
> index 1b0e3fb..e18d8af 100644
> --- a/drivers/tty/serial/sprd_serial.c
> +++ b/drivers/tty/serial/sprd_serial.c
> @@ -45,6 +45,8 @@
>
>  /* data number in TX and RX fifo */
>  #define SPRD_STS1              0x000C
> +#define SPRD_RX_FIFO_CNT_MASK  GENMASK(7, 0)
> +#define SPRD_TX_FIFO_CNT_MASK  GENMASK(15, 8)
>
>  /* interrupt enable register and its BITs */
>  #define SPRD_IEN               0x0010
> @@ -82,11 +84,15 @@
>  /* fifo threshold register */
>  #define SPRD_CTL2              0x0020
>  #define THLD_TX_EMPTY  0x40
> +#define THLD_TX_EMPTY_SHIFT    8
>  #define THLD_RX_FULL   0x40
>
>  /* config baud rate register */
>  #define SPRD_CLKD0             0x0024
> +#define SPRD_CLKD0_MASK                GENMASK(15, 0)
>  #define SPRD_CLKD1             0x0028
> +#define SPRD_CLKD1_MASK                GENMASK(20, 16)
> +#define SPRD_CLKD1_SHIFT       16
>
>  /* interrupt mask status register */
>  #define SPRD_IMSR                      0x002C
> @@ -115,7 +121,7 @@ static inline void serial_out(struct uart_port *port, int offset, int value)
>
>  static unsigned int sprd_tx_empty(struct uart_port *port)
>  {
> -       if (serial_in(port, SPRD_STS1) & 0xff00)
> +       if (serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK)
>                 return 0;
>         else
>                 return TIOCSER_TEMT;
> @@ -213,7 +219,8 @@ static inline void sprd_rx(struct uart_port *port)
>         struct tty_port *tty = &port->state->port;
>         unsigned int ch, flag, lsr, max_count = SPRD_TIMEOUT;
>
> -       while ((serial_in(port, SPRD_STS1) & 0x00ff) && max_count--) {
> +       while ((serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK) &&
> +              max_count--) {
>                 lsr = serial_in(port, SPRD_LSR);
>                 ch = serial_in(port, SPRD_RXD);
>                 flag = TTY_NORMAL;
> @@ -303,16 +310,17 @@ static int sprd_startup(struct uart_port *port)
>         struct sprd_uart_port *sp;
>         unsigned long flags;
>
> -       serial_out(port, SPRD_CTL2, ((THLD_TX_EMPTY << 8) | THLD_RX_FULL));
> +       serial_out(port, SPRD_CTL2,
> +                  THLD_TX_EMPTY << THLD_TX_EMPTY_SHIFT | THLD_RX_FULL);
>
>         /* clear rx fifo */
>         timeout = SPRD_TIMEOUT;
> -       while (timeout-- && serial_in(port, SPRD_STS1) & 0x00ff)
> +       while (timeout-- && serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK)
>                 serial_in(port, SPRD_RXD);
>
>         /* clear tx fifo */
>         timeout = SPRD_TIMEOUT;
> -       while (timeout-- && serial_in(port, SPRD_STS1) & 0xff00)
> +       while (timeout-- && serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK)
>                 cpu_relax();
>
>         /* clear interrupt */
> @@ -433,10 +441,11 @@ static void sprd_set_termios(struct uart_port *port,
>         }
>
>         /* clock divider bit0~bit15 */
> -       serial_out(port, SPRD_CLKD0, quot & 0xffff);
> +       serial_out(port, SPRD_CLKD0, quot & SPRD_CLKD0_MASK);
>
>         /* clock divider bit16~bit20 */
> -       serial_out(port, SPRD_CLKD1, (quot & 0x1f0000) >> 16);
> +       serial_out(port, SPRD_CLKD1,
> +                  (quot & SPRD_CLKD1_MASK) >> SPRD_CLKD1_SHIFT);
>         serial_out(port, SPRD_LCR, lcr);
>         fc |= RX_TOUT_THLD_DEF | RX_HFC_THLD_DEF;
>         serial_out(port, SPRD_CTL1, fc);
> @@ -510,7 +519,7 @@ static void wait_for_xmitr(struct uart_port *port)
>                 if (--tmout == 0)
>                         break;
>                 udelay(1);
> -       } while (status & 0xff00);
> +       } while (status & SPRD_TX_FIFO_CNT_MASK);
>  }
>
>  static void sprd_console_putchar(struct uart_port *port, int ch)
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/5] serial: sprd: Remove unnecessary resource validation
  2018-08-11  1:34 ` [PATCH 3/5] serial: sprd: Remove unnecessary resource validation Baolin Wang
@ 2018-09-04  6:55   ` Chunyan Zhang
  0 siblings, 0 replies; 12+ messages in thread
From: Chunyan Zhang @ 2018-09-04  6:55 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> The devm_ioremap_resource() will valid the resources, thus remove the
> unnecessary resource validation in the driver.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

> ---
>  drivers/tty/serial/sprd_serial.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
> index e18d8af..03b0cd4 100644
> --- a/drivers/tty/serial/sprd_serial.c
> +++ b/drivers/tty/serial/sprd_serial.c
> @@ -710,15 +710,12 @@ static int sprd_probe(struct platform_device *pdev)
>                 up->uartclk = clk_get_rate(clk);
>
>         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -       if (!res) {
> -               dev_err(&pdev->dev, "not provide mem resource\n");
> -               return -ENODEV;
> -       }
> -       up->mapbase = res->start;
>         up->membase = devm_ioremap_resource(&pdev->dev, res);
>         if (IS_ERR(up->membase))
>                 return PTR_ERR(up->membase);
>
> +       up->mapbase = res->start;
> +
>         irq = platform_get_irq(pdev, 0);
>         if (irq < 0) {
>                 dev_err(&pdev->dev, "not provide irq resource: %d\n", irq);
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int'
  2018-08-11  1:34 ` [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int' Baolin Wang
@ 2018-09-04  6:55   ` Chunyan Zhang
  0 siblings, 0 replies; 12+ messages in thread
From: Chunyan Zhang @ 2018-09-04  6:55 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> The register offset value should be 'unsigned int' type.
>
> Moreover, prefer 'unsigned int' to bare use of 'unsigned'.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

> ---
>  drivers/tty/serial/sprd_serial.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
> index 03b0cd4..8d5c9cd 100644
> --- a/drivers/tty/serial/sprd_serial.c
> +++ b/drivers/tty/serial/sprd_serial.c
> @@ -109,12 +109,14 @@ struct sprd_uart_port {
>  static struct sprd_uart_port *sprd_port[UART_NR_MAX];
>  static int sprd_ports_num;
>
> -static inline unsigned int serial_in(struct uart_port *port, int offset)
> +static inline unsigned int serial_in(struct uart_port *port,
> +                                    unsigned int offset)
>  {
>         return readl_relaxed(port->membase + offset);
>  }
>
> -static inline void serial_out(struct uart_port *port, int offset, int value)
> +static inline void serial_out(struct uart_port *port, unsigned int offset,
> +                             int value)
>  {
>         writel_relaxed(value, port->membase + offset);
>  }
> @@ -598,8 +600,7 @@ static void sprd_putc(struct uart_port *port, int c)
>         writeb(c, port->membase + SPRD_TXD);
>  }
>
> -static void sprd_early_write(struct console *con, const char *s,
> -                                   unsigned n)
> +static void sprd_early_write(struct console *con, const char *s, unsigned int n)
>  {
>         struct earlycon_device *dev = con->data;
>
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 5/5] serial: sprd: Fix the indentation issue
  2018-08-11  1:34 ` [PATCH 5/5] serial: sprd: Fix the indentation issue Baolin Wang
@ 2018-09-04  6:57   ` Chunyan Zhang
  0 siblings, 0 replies; 12+ messages in thread
From: Chunyan Zhang @ 2018-09-04  6:57 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
> Make the macros' definition and code have the same correct indentation.
>
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

> ---
>  drivers/tty/serial/sprd_serial.c | 46 +++++++++++++++++++---------------------
>  1 file changed, 22 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
> index 8d5c9cd..4287ca3 100644
> --- a/drivers/tty/serial/sprd_serial.c
> +++ b/drivers/tty/serial/sprd_serial.c
> @@ -68,24 +68,24 @@
>  #define SPRD_LCR_DATA_LEN6     0x4
>  #define SPRD_LCR_DATA_LEN7     0x8
>  #define SPRD_LCR_DATA_LEN8     0xc
> -#define SPRD_LCR_PARITY        (BIT(0) | BIT(1))
> +#define SPRD_LCR_PARITY                (BIT(0) | BIT(1))
>  #define SPRD_LCR_PARITY_EN     0x2
>  #define SPRD_LCR_EVEN_PAR      0x0
>  #define SPRD_LCR_ODD_PAR       0x1
>
>  /* control register 1 */
> -#define SPRD_CTL1                      0x001C
> +#define SPRD_CTL1              0x001C
>  #define RX_HW_FLOW_CTL_THLD    BIT(6)
>  #define RX_HW_FLOW_CTL_EN      BIT(7)
>  #define TX_HW_FLOW_CTL_EN      BIT(8)
>  #define RX_TOUT_THLD_DEF       0x3E00
> -#define RX_HFC_THLD_DEF        0x40
> +#define RX_HFC_THLD_DEF                0x40
>
>  /* fifo threshold register */
>  #define SPRD_CTL2              0x0020
> -#define THLD_TX_EMPTY  0x40
> +#define THLD_TX_EMPTY          0x40
>  #define THLD_TX_EMPTY_SHIFT    8
> -#define THLD_RX_FULL   0x40
> +#define THLD_RX_FULL           0x40
>
>  /* config baud rate register */
>  #define SPRD_CLKD0             0x0024
> @@ -95,11 +95,11 @@
>  #define SPRD_CLKD1_SHIFT       16
>
>  /* interrupt mask status register */
> -#define SPRD_IMSR                      0x002C
> -#define SPRD_IMSR_RX_FIFO_FULL         BIT(0)
> +#define SPRD_IMSR              0x002C
> +#define SPRD_IMSR_RX_FIFO_FULL BIT(0)
>  #define SPRD_IMSR_TX_FIFO_EMPTY        BIT(1)
> -#define SPRD_IMSR_BREAK_DETECT         BIT(7)
> -#define SPRD_IMSR_TIMEOUT              BIT(13)
> +#define SPRD_IMSR_BREAK_DETECT BIT(7)
> +#define SPRD_IMSR_TIMEOUT      BIT(13)
>
>  struct sprd_uart_port {
>         struct uart_port port;
> @@ -229,7 +229,7 @@ static inline void sprd_rx(struct uart_port *port)
>                 port->icount.rx++;
>
>                 if (lsr & (SPRD_LSR_BI | SPRD_LSR_PE |
> -                       SPRD_LSR_FE | SPRD_LSR_OE))
> +                          SPRD_LSR_FE | SPRD_LSR_OE))
>                         if (handle_lsr_errors(port, &lsr, &flag))
>                                 continue;
>                 if (uart_handle_sysrq_char(port, ch))
> @@ -292,8 +292,8 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)
>         if (ims & SPRD_IMSR_TIMEOUT)
>                 serial_out(port, SPRD_ICLR, SPRD_ICLR_TIMEOUT);
>
> -       if (ims & (SPRD_IMSR_RX_FIFO_FULL |
> -               SPRD_IMSR_BREAK_DETECT | SPRD_IMSR_TIMEOUT))
> +       if (ims & (SPRD_IMSR_RX_FIFO_FULL | SPRD_IMSR_BREAK_DETECT |
> +                  SPRD_IMSR_TIMEOUT))
>                 sprd_rx(port);
>
>         if (ims & SPRD_IMSR_TX_FIFO_EMPTY)
> @@ -333,7 +333,7 @@ static int sprd_startup(struct uart_port *port)
>         sp = container_of(port, struct sprd_uart_port, port);
>         snprintf(sp->name, sizeof(sp->name), "sprd_serial%d", port->line);
>         ret = devm_request_irq(port->dev, port->irq, sprd_handle_irq,
> -                               IRQF_SHARED, sp->name, port);
> +                              IRQF_SHARED, sp->name, port);
>         if (ret) {
>                 dev_err(port->dev, "fail to request serial irq %d, ret=%d\n",
>                         port->irq, ret);
> @@ -361,8 +361,8 @@ static void sprd_shutdown(struct uart_port *port)
>  }
>
>  static void sprd_set_termios(struct uart_port *port,
> -                                   struct ktermios *termios,
> -                                   struct ktermios *old)
> +                            struct ktermios *termios,
> +                            struct ktermios *old)
>  {
>         unsigned int baud, quot;
>         unsigned int lcr = 0, fc;
> @@ -480,8 +480,7 @@ static void sprd_config_port(struct uart_port *port, int flags)
>                 port->type = PORT_SPRD;
>  }
>
> -static int sprd_verify_port(struct uart_port *port,
> -                                  struct serial_struct *ser)
> +static int sprd_verify_port(struct uart_port *port, struct serial_struct *ser)
>  {
>         if (ser->type != PORT_SPRD)
>                 return -EINVAL;
> @@ -531,7 +530,7 @@ static void sprd_console_putchar(struct uart_port *port, int ch)
>  }
>
>  static void sprd_console_write(struct console *co, const char *s,
> -                                     unsigned int count)
> +                              unsigned int count)
>  {
>         struct uart_port *port = &sprd_port[co->index]->port;
>         int locked = 1;
> @@ -594,7 +593,7 @@ static void sprd_putc(struct uart_port *port, int c)
>         unsigned int timeout = SPRD_TIMEOUT;
>
>         while (timeout-- &&
> -                  !(readl(port->membase + SPRD_LSR) & SPRD_LSR_TX_OVER))
> +              !(readl(port->membase + SPRD_LSR) & SPRD_LSR_TX_OVER))
>                 cpu_relax();
>
>         writeb(c, port->membase + SPRD_TXD);
> @@ -607,9 +606,8 @@ static void sprd_early_write(struct console *con, const char *s, unsigned int n)
>         uart_console_write(&dev->port, s, n, sprd_putc);
>  }
>
> -static int __init sprd_early_console_setup(
> -                               struct earlycon_device *device,
> -                               const char *opt)
> +static int __init sprd_early_console_setup(struct earlycon_device *device,
> +                                          const char *opt)
>  {
>         if (!device->port.membase)
>                 return -ENODEV;
> @@ -691,8 +689,8 @@ static int sprd_probe(struct platform_device *pdev)
>
>         index = sprd_probe_dt_alias(index, &pdev->dev);
>
> -       sprd_port[index] = devm_kzalloc(&pdev->dev,
> -               sizeof(*sprd_port[index]), GFP_KERNEL);
> +       sprd_port[index] = devm_kzalloc(&pdev->dev, sizeof(*sprd_port[index]),
> +                                       GFP_KERNEL);
>         if (!sprd_port[index])
>                 return -ENOMEM;
>
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/5] serial: sprd: Remove unused structure
  2018-09-04  6:52 ` Chunyan Zhang
@ 2018-09-11  6:09   ` Baolin Wang
  0 siblings, 0 replies; 12+ messages in thread
From: Baolin Wang @ 2018-09-11  6:09 UTC (permalink / raw)
  To: Chunyan Zhang
  Cc: Greg Kroah-Hartman, jslaby, Orson Zhai, Mark Brown, linux-serial,
	Linux Kernel Mailing List

Hi,

On 4 September 2018 at 14:52, Chunyan Zhang <zhang.lyra@gmail.com> wrote:
> On 11 August 2018 at 09:34, Baolin Wang <baolin.wang@linaro.org> wrote:
>> Remove the unused reg_backup structure.
>>
>> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
>
> Acked-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

Thanks Chunyan.

Greg, could you apply this patch set if there are no other issues? Thanks.

>> ---
>>  drivers/tty/serial/sprd_serial.c | 11 -----------
>>  1 file changed, 11 deletions(-)
>>
>> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
>> index 828f114..1b0e3fb 100644
>> --- a/drivers/tty/serial/sprd_serial.c
>> +++ b/drivers/tty/serial/sprd_serial.c
>> @@ -95,19 +95,8 @@
>>  #define SPRD_IMSR_BREAK_DETECT         BIT(7)
>>  #define SPRD_IMSR_TIMEOUT              BIT(13)
>>
>> -struct reg_backup {
>> -       u32 ien;
>> -       u32 ctrl0;
>> -       u32 ctrl1;
>> -       u32 ctrl2;
>> -       u32 clkd0;
>> -       u32 clkd1;
>> -       u32 dspwait;
>> -};
>> -
>>  struct sprd_uart_port {
>>         struct uart_port port;
>> -       struct reg_backup reg_bak;
>>         char name[16];
>>  };
>>
>> --
>> 1.9.1
>>



-- 
Baolin Wang
Best Regards

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-09-11  6:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-11  1:34 [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
2018-08-11  1:34 ` [PATCH 2/5] serial: sprd: Use readable macros instead of magic number Baolin Wang
2018-09-04  6:54   ` Chunyan Zhang
2018-08-11  1:34 ` [PATCH 3/5] serial: sprd: Remove unnecessary resource validation Baolin Wang
2018-09-04  6:55   ` Chunyan Zhang
2018-08-11  1:34 ` [PATCH 4/5] serial: sprd: Change 'int' to 'unsigned int' Baolin Wang
2018-09-04  6:55   ` Chunyan Zhang
2018-08-11  1:34 ` [PATCH 5/5] serial: sprd: Fix the indentation issue Baolin Wang
2018-09-04  6:57   ` Chunyan Zhang
2018-09-04  5:34 ` [PATCH 1/5] serial: sprd: Remove unused structure Baolin Wang
2018-09-04  6:52 ` Chunyan Zhang
2018-09-11  6:09   ` Baolin Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.