2022-03-04 16:10:19

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 1/7] tty: serial: samsung: embed s3c24xx_uart_info in parent structure

Embed "struct s3c24xx_uart_info" directly as a member of "struct
s3c24xx_serial_drv_data" instead of keeping it as a pointer. This makes
the code clearer (obvious ownership of "struct s3c24xx_serial_drv_data")
and saves one pointer.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/tty/serial/samsung_tty.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index d002a4e48ed9..aa5678d03704 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -85,7 +85,7 @@ struct s3c24xx_uart_info {
};

struct s3c24xx_serial_drv_data {
- struct s3c24xx_uart_info *info;
+ struct s3c24xx_uart_info info;
struct s3c2410_uartcfg *def_cfg;
unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
};
@@ -2197,7 +2197,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
}

ourport->baudclk = ERR_PTR(-EINVAL);
- ourport->info = ourport->drv_data->info;
+ ourport->info = &ourport->drv_data->info;
ourport->cfg = (dev_get_platdata(&pdev->dev)) ?
dev_get_platdata(&pdev->dev) :
ourport->drv_data->def_cfg;
@@ -2616,7 +2616,7 @@ static struct console s3c24xx_serial_console = {

#ifdef CONFIG_CPU_S3C2410
static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Samsung S3C2410 UART",
.type = TYPE_S3C24XX,
.port_type = PORT_S3C2410,
@@ -2644,7 +2644,7 @@ static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {

#ifdef CONFIG_CPU_S3C2412
static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Samsung S3C2412 UART",
.type = TYPE_S3C24XX,
.port_type = PORT_S3C2412,
@@ -2674,7 +2674,7 @@ static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Samsung S3C2440 UART",
.type = TYPE_S3C24XX,
.port_type = PORT_S3C2440,
@@ -2704,7 +2704,7 @@ static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {

#if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Samsung S3C6400 UART",
.type = TYPE_S3C6400,
.port_type = PORT_S3C6400,
@@ -2733,7 +2733,7 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {

#ifdef CONFIG_CPU_S5PV210
static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Samsung S5PV210 UART",
.type = TYPE_S3C6400,
.port_type = PORT_S3C6400,
@@ -2762,7 +2762,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {

#if defined(CONFIG_ARCH_EXYNOS)
#define EXYNOS_COMMON_SERIAL_DRV_DATA() \
- .info = &(struct s3c24xx_uart_info) { \
+ .info = { \
.name = "Samsung Exynos UART", \
.type = TYPE_S3C6400, \
.port_type = PORT_S3C6400, \
@@ -2811,7 +2811,7 @@ static struct s3c24xx_serial_drv_data exynos850_serial_drv_data = {

#ifdef CONFIG_ARCH_APPLE
static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
- .info = &(struct s3c24xx_uart_info) {
+ .info = {
.name = "Apple S5L UART",
.type = TYPE_APPLE_S5L,
.port_type = PORT_8250,
--
2.32.0


2022-03-04 17:10:21

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 3/7] tty: serial: samsung: constify s3c24xx_serial_drv_data

The driver data (struct s3c24xx_serial_drv_data) is only used to
initialize the driver properly and is not modified. Make it const.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/tty/serial/samsung_tty.c | 139 +++++++++++++++----------------
1 file changed, 69 insertions(+), 70 deletions(-)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index a9a75b5b9705..0b4f40044e87 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -136,14 +136,14 @@ struct s3c24xx_uart_port {
unsigned int tx_mode;
unsigned int rx_mode;

- struct s3c24xx_uart_info *info;
+ const struct s3c24xx_uart_info *info;
struct clk *clk;
struct clk *baudclk;
struct uart_port port;
- struct s3c24xx_serial_drv_data *drv_data;
+ const struct s3c24xx_serial_drv_data *drv_data;

/* reference to platform data */
- struct s3c2410_uartcfg *cfg;
+ const struct s3c2410_uartcfg *cfg;

struct s3c24xx_uart_dma *dma;

@@ -221,7 +221,7 @@ static inline void s3c24xx_clear_bit(struct uart_port *port, int idx,
local_irq_restore(flags);
}

-static inline struct s3c24xx_uart_port *to_ourport(struct uart_port *port)
+static inline struct s3c24xx_uart_port *to_ourport(const struct uart_port *port)
{
return container_of(port, struct s3c24xx_uart_port, port);
}
@@ -573,13 +573,13 @@ static void s3c24xx_serial_stop_rx(struct uart_port *port)
}
}

-static inline struct s3c24xx_uart_info
+static inline const struct s3c24xx_uart_info
*s3c24xx_port_to_info(struct uart_port *port)
{
return to_ourport(port)->info;
}

-static inline struct s3c2410_uartcfg
+static inline const struct s3c2410_uartcfg
*s3c24xx_port_to_cfg(struct uart_port *port)
{
struct s3c24xx_uart_port *ourport;
@@ -594,7 +594,7 @@ static inline struct s3c2410_uartcfg
static int s3c24xx_serial_rx_fifocnt(struct s3c24xx_uart_port *ourport,
unsigned long ufstat)
{
- struct s3c24xx_uart_info *info = ourport->info;
+ const struct s3c24xx_uart_info *info = ourport->info;

if (ufstat & info->rx_fifofull)
return ourport->port.fifosize;
@@ -986,7 +986,7 @@ static irqreturn_t apple_serial_handle_irq(int irq, void *id)

static unsigned int s3c24xx_serial_tx_empty(struct uart_port *port)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
unsigned long ufstat = rd_regl(port, S3C2410_UFSTAT);
unsigned long ufcon = rd_regl(port, S3C2410_UFCON);

@@ -1405,7 +1405,7 @@ static void s3c24xx_serial_pm(struct uart_port *port, unsigned int level,

static inline int s3c24xx_serial_getsource(struct uart_port *port)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
unsigned int ucon;

if (info->num_clks == 1)
@@ -1419,7 +1419,7 @@ static inline int s3c24xx_serial_getsource(struct uart_port *port)
static void s3c24xx_serial_setsource(struct uart_port *port,
unsigned int clk_sel)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
unsigned int ucon;

if (info->num_clks == 1)
@@ -1438,7 +1438,7 @@ static unsigned int s3c24xx_serial_getclk(struct s3c24xx_uart_port *ourport,
unsigned int req_baud, struct clk **best_clk,
unsigned int *clk_num)
{
- struct s3c24xx_uart_info *info = ourport->info;
+ const struct s3c24xx_uart_info *info = ourport->info;
struct clk *clk;
unsigned long rate;
unsigned int cnt, baud, quot, best_quot = 0;
@@ -1522,7 +1522,7 @@ static void s3c24xx_serial_set_termios(struct uart_port *port,
struct ktermios *termios,
struct ktermios *old)
{
- struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port);
+ const struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port);
struct s3c24xx_uart_port *ourport = to_ourport(port);
struct clk *clk = ERR_PTR(-EINVAL);
unsigned long flags;
@@ -1691,7 +1691,7 @@ static const char *s3c24xx_serial_type(struct uart_port *port)

static void s3c24xx_serial_config_port(struct uart_port *port, int flags)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);

if (flags & UART_CONFIG_TYPE)
port->type = info->port_type;
@@ -1703,7 +1703,7 @@ static void s3c24xx_serial_config_port(struct uart_port *port, int flags)
static int
s3c24xx_serial_verify_port(struct uart_port *port, struct serial_struct *ser)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);

if (ser->type != PORT_UNKNOWN && ser->type != info->port_type)
return -EINVAL;
@@ -1873,9 +1873,9 @@ s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS] = {
*/

static void s3c24xx_serial_resetport(struct uart_port *port,
- struct s3c2410_uartcfg *cfg)
+ const struct s3c2410_uartcfg *cfg)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
unsigned long ucon = rd_regl(port, S3C2410_UCON);

ucon &= (info->clksel_mask | info->ucon_mask);
@@ -1979,7 +1979,7 @@ s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
static int s3c24xx_serial_enable_baudclk(struct s3c24xx_uart_port *ourport)
{
struct device *dev = ourport->port.dev;
- struct s3c24xx_uart_info *info = ourport->info;
+ const struct s3c24xx_uart_info *info = ourport->info;
char clk_name[MAX_CLK_NAME_LENGTH];
unsigned int clk_sel;
struct clk *clk;
@@ -2021,7 +2021,7 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
struct platform_device *platdev)
{
struct uart_port *port = &ourport->port;
- struct s3c2410_uartcfg *cfg = ourport->cfg;
+ const struct s3c2410_uartcfg *cfg = ourport->cfg;
struct resource *res;
int ret;

@@ -2156,7 +2156,7 @@ static const struct of_device_id s3c24xx_uart_dt_match[];

static int probe_index;

-static inline struct s3c24xx_serial_drv_data *
+static inline const struct s3c24xx_serial_drv_data *
s3c24xx_get_driver_data(struct platform_device *pdev)
{
#ifdef CONFIG_OF
@@ -2419,7 +2419,7 @@ static struct uart_port *cons_uart;
static int
s3c24xx_serial_console_txrdy(struct uart_port *port, unsigned int ufcon)
{
- struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
+ const struct s3c24xx_uart_info *info = s3c24xx_port_to_info(port);
unsigned long ufstat, utrstat;

if (ufcon & S3C2410_UFCON_FIFOMODE) {
@@ -2615,7 +2615,7 @@ static struct console s3c24xx_serial_console = {
#endif /* CONFIG_SERIAL_SAMSUNG_CONSOLE */

#ifdef CONFIG_CPU_S3C2410
-static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
.info = {
.name = "Samsung S3C2410 UART",
.type = TYPE_S3C24XX,
@@ -2637,13 +2637,13 @@ static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
.ufcon = S3C2410_UFCON_DEFAULT,
},
};
-#define S3C2410_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c2410_serial_drv_data)
+#define S3C2410_SERIAL_DRV_DATA (&s3c2410_serial_drv_data)
#else
-#define S3C2410_SERIAL_DRV_DATA (kernel_ulong_t)NULL
+#define S3C2410_SERIAL_DRV_DATA (NULL)
#endif

#ifdef CONFIG_CPU_S3C2412
-static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
.info = {
.name = "Samsung S3C2412 UART",
.type = TYPE_S3C24XX,
@@ -2666,14 +2666,14 @@ static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
.ufcon = S3C2410_UFCON_DEFAULT,
},
};
-#define S3C2412_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c2412_serial_drv_data)
+#define S3C2412_SERIAL_DRV_DATA (&s3c2412_serial_drv_data)
#else
-#define S3C2412_SERIAL_DRV_DATA (kernel_ulong_t)NULL
+#define S3C2412_SERIAL_DRV_DATA (NULL)
#endif

#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
-static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
.info = {
.name = "Samsung S3C2440 UART",
.type = TYPE_S3C24XX,
@@ -2697,13 +2697,13 @@ static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
.ufcon = S3C2410_UFCON_DEFAULT,
},
};
-#define S3C2440_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c2440_serial_drv_data)
+#define S3C2440_SERIAL_DRV_DATA (&s3c2440_serial_drv_data)
#else
-#define S3C2440_SERIAL_DRV_DATA (kernel_ulong_t)NULL
+#define S3C2440_SERIAL_DRV_DATA (NULL)
#endif

#if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
-static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
.info = {
.name = "Samsung S3C6400 UART",
.type = TYPE_S3C6400,
@@ -2726,13 +2726,13 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
.ufcon = S3C2410_UFCON_DEFAULT,
},
};
-#define S3C6400_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c6400_serial_drv_data)
+#define S3C6400_SERIAL_DRV_DATA (&s3c6400_serial_drv_data)
#else
-#define S3C6400_SERIAL_DRV_DATA (kernel_ulong_t)NULL
+#define S3C6400_SERIAL_DRV_DATA (NULL)
#endif

#ifdef CONFIG_CPU_S5PV210
-static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
.info = {
.name = "Samsung S5PV210 UART",
.type = TYPE_S3C6400,
@@ -2755,9 +2755,9 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
},
.fifosize = { 256, 64, 16, 16 },
};
-#define S5PV210_SERIAL_DRV_DATA ((kernel_ulong_t)&s5pv210_serial_drv_data)
+#define S5PV210_SERIAL_DRV_DATA (&s5pv210_serial_drv_data)
#else
-#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
+#define S5PV210_SERIAL_DRV_DATA (NULL)
#endif

#if defined(CONFIG_ARCH_EXYNOS)
@@ -2784,33 +2784,33 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
.has_fracval = 1, \
} \

-static struct s3c24xx_serial_drv_data exynos4210_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data exynos4210_serial_drv_data = {
EXYNOS_COMMON_SERIAL_DRV_DATA(),
.fifosize = { 256, 64, 16, 16 },
};

-static struct s3c24xx_serial_drv_data exynos5433_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data exynos5433_serial_drv_data = {
EXYNOS_COMMON_SERIAL_DRV_DATA(),
.fifosize = { 64, 256, 16, 256 },
};

-static struct s3c24xx_serial_drv_data exynos850_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data exynos850_serial_drv_data = {
EXYNOS_COMMON_SERIAL_DRV_DATA(),
.fifosize = { 256, 64, 64, 64 },
};

-#define EXYNOS4210_SERIAL_DRV_DATA ((kernel_ulong_t)&exynos4210_serial_drv_data)
-#define EXYNOS5433_SERIAL_DRV_DATA ((kernel_ulong_t)&exynos5433_serial_drv_data)
-#define EXYNOS850_SERIAL_DRV_DATA ((kernel_ulong_t)&exynos850_serial_drv_data)
+#define EXYNOS4210_SERIAL_DRV_DATA (&exynos4210_serial_drv_data)
+#define EXYNOS5433_SERIAL_DRV_DATA (&exynos5433_serial_drv_data)
+#define EXYNOS850_SERIAL_DRV_DATA (&exynos850_serial_drv_data)

#else
-#define EXYNOS4210_SERIAL_DRV_DATA ((kernel_ulong_t)NULL)
-#define EXYNOS5433_SERIAL_DRV_DATA ((kernel_ulong_t)NULL)
-#define EXYNOS850_SERIAL_DRV_DATA ((kernel_ulong_t)NULL)
+#define EXYNOS4210_SERIAL_DRV_DATA (NULL)
+#define EXYNOS5433_SERIAL_DRV_DATA (NULL)
+#define EXYNOS850_SERIAL_DRV_DATA (NULL)
#endif

#ifdef CONFIG_ARCH_APPLE
-static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
+static const struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
.info = {
.name = "Apple S5L UART",
.type = TYPE_APPLE_S5L,
@@ -2832,39 +2832,39 @@ static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
.ufcon = S3C2410_UFCON_DEFAULT,
},
};
-#define S5L_SERIAL_DRV_DATA ((kernel_ulong_t)&s5l_serial_drv_data)
+#define S5L_SERIAL_DRV_DATA (&s5l_serial_drv_data)
#else
-#define S5L_SERIAL_DRV_DATA ((kernel_ulong_t)NULL)
+#define S5L_SERIAL_DRV_DATA (NULL)
#endif

static const struct platform_device_id s3c24xx_serial_driver_ids[] = {
{
.name = "s3c2410-uart",
- .driver_data = S3C2410_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S3C2410_SERIAL_DRV_DATA,
}, {
.name = "s3c2412-uart",
- .driver_data = S3C2412_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S3C2412_SERIAL_DRV_DATA,
}, {
.name = "s3c2440-uart",
- .driver_data = S3C2440_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S3C2440_SERIAL_DRV_DATA,
}, {
.name = "s3c6400-uart",
- .driver_data = S3C6400_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S3C6400_SERIAL_DRV_DATA,
}, {
.name = "s5pv210-uart",
- .driver_data = S5PV210_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S5PV210_SERIAL_DRV_DATA,
}, {
.name = "exynos4210-uart",
- .driver_data = EXYNOS4210_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)EXYNOS4210_SERIAL_DRV_DATA,
}, {
.name = "exynos5433-uart",
- .driver_data = EXYNOS5433_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)EXYNOS5433_SERIAL_DRV_DATA,
}, {
.name = "s5l-uart",
- .driver_data = S5L_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)S5L_SERIAL_DRV_DATA,
}, {
.name = "exynos850-uart",
- .driver_data = EXYNOS850_SERIAL_DRV_DATA,
+ .driver_data = (kernel_ulong_t)EXYNOS850_SERIAL_DRV_DATA,
},
{ },
};
@@ -2873,23 +2873,23 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_serial_driver_ids);
#ifdef CONFIG_OF
static const struct of_device_id s3c24xx_uart_dt_match[] = {
{ .compatible = "samsung,s3c2410-uart",
- .data = (void *)S3C2410_SERIAL_DRV_DATA },
+ .data = S3C2410_SERIAL_DRV_DATA },
{ .compatible = "samsung,s3c2412-uart",
- .data = (void *)S3C2412_SERIAL_DRV_DATA },
+ .data = S3C2412_SERIAL_DRV_DATA },
{ .compatible = "samsung,s3c2440-uart",
- .data = (void *)S3C2440_SERIAL_DRV_DATA },
+ .data = S3C2440_SERIAL_DRV_DATA },
{ .compatible = "samsung,s3c6400-uart",
- .data = (void *)S3C6400_SERIAL_DRV_DATA },
+ .data = S3C6400_SERIAL_DRV_DATA },
{ .compatible = "samsung,s5pv210-uart",
- .data = (void *)S5PV210_SERIAL_DRV_DATA },
+ .data = S5PV210_SERIAL_DRV_DATA },
{ .compatible = "samsung,exynos4210-uart",
- .data = (void *)EXYNOS4210_SERIAL_DRV_DATA },
+ .data = EXYNOS4210_SERIAL_DRV_DATA },
{ .compatible = "samsung,exynos5433-uart",
- .data = (void *)EXYNOS5433_SERIAL_DRV_DATA },
+ .data = EXYNOS5433_SERIAL_DRV_DATA },
{ .compatible = "apple,s5l-uart",
- .data = (void *)S5L_SERIAL_DRV_DATA },
+ .data = S5L_SERIAL_DRV_DATA },
{ .compatible = "samsung,exynos850-uart",
- .data = (void *)EXYNOS850_SERIAL_DRV_DATA },
+ .data = EXYNOS850_SERIAL_DRV_DATA },
{},
};
MODULE_DEVICE_TABLE(of, s3c24xx_uart_dt_match);
@@ -2935,7 +2935,7 @@ module_exit(samsung_serial_exit);
* Early console.
*/

-static void wr_reg_barrier(struct uart_port *port, u32 reg, u32 val)
+static void wr_reg_barrier(const struct uart_port *port, u32 reg, u32 val)
{
switch (port->iotype) {
case UPIO_MEM:
@@ -2951,15 +2951,15 @@ struct samsung_early_console_data {
u32 txfull_mask;
};

-static void samsung_early_busyuart(struct uart_port *port)
+static void samsung_early_busyuart(const struct uart_port *port)
{
while (!(readl(port->membase + S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXFE))
;
}

-static void samsung_early_busyuart_fifo(struct uart_port *port)
+static void samsung_early_busyuart_fifo(const struct uart_port *port)
{
- struct samsung_early_console_data *data = port->private_data;
+ const struct samsung_early_console_data *data = port->private_data;

while (readl(port->membase + S3C2410_UFSTAT) & data->txfull_mask)
;
@@ -3062,7 +3062,6 @@ static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
OF_EARLYCON_DECLARE(s5l, "apple,s5l-uart", apple_s5l_early_console_setup);
#endif

-MODULE_ALIAS("platform:samsung-uart");
MODULE_DESCRIPTION("Samsung SoC Serial port driver");
MODULE_AUTHOR("Ben Dooks <[email protected]>");
MODULE_LICENSE("GPL v2");
--
2.32.0

2022-03-04 17:11:22

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 5/7] tty: serial: samsung: constify s3c24xx_serial_drv_data members

The driver data (struct s3c24xx_serial_drv_data) is never modified, so
also its members can be make const. Except code style this has no
impact because the structure itself is always a const.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/tty/serial/samsung_tty.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index 279c413f2300..eecefff5c4a4 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -85,9 +85,9 @@ struct s3c24xx_uart_info {
};

struct s3c24xx_serial_drv_data {
- struct s3c24xx_uart_info info;
- struct s3c2410_uartcfg def_cfg;
- unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
+ const struct s3c24xx_uart_info info;
+ const struct s3c2410_uartcfg def_cfg;
+ const unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
};

struct s3c24xx_uart_dma {
--
2.32.0

2022-03-04 20:05:58

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 2/7] tty: serial: samsung: embed s3c2410_uartcfg in parent structure

Embed "struct s3c2410_uartcfg" directly as a member of "struct
s3c24xx_serial_drv_data" instead of keeping it as a pointer. This makes
the code clearer (obvious ownership of "s3c2410_uartcfg
s3c24xx_serial_drv_data") and saves one pointer.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/tty/serial/samsung_tty.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index aa5678d03704..a9a75b5b9705 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -86,7 +86,7 @@ struct s3c24xx_uart_info {

struct s3c24xx_serial_drv_data {
struct s3c24xx_uart_info info;
- struct s3c2410_uartcfg *def_cfg;
+ struct s3c2410_uartcfg def_cfg;
unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
};

@@ -2200,7 +2200,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
ourport->info = &ourport->drv_data->info;
ourport->cfg = (dev_get_platdata(&pdev->dev)) ?
dev_get_platdata(&pdev->dev) :
- ourport->drv_data->def_cfg;
+ &ourport->drv_data->def_cfg;

switch (ourport->info->type) {
case TYPE_S3C24XX:
@@ -2632,7 +2632,7 @@ static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
.clksel_mask = S3C2410_UCON_CLKMASK,
.clksel_shift = S3C2410_UCON_CLKSHIFT,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = S3C2410_UCON_DEFAULT,
.ufcon = S3C2410_UFCON_DEFAULT,
},
@@ -2661,7 +2661,7 @@ static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
.clksel_mask = S3C2412_UCON_CLKMASK,
.clksel_shift = S3C2412_UCON_CLKSHIFT,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = S3C2410_UCON_DEFAULT,
.ufcon = S3C2410_UFCON_DEFAULT,
},
@@ -2692,7 +2692,7 @@ static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
.clksel_shift = S3C2412_UCON_CLKSHIFT,
.ucon_mask = S3C2440_UCON0_DIVMASK,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = S3C2410_UCON_DEFAULT,
.ufcon = S3C2410_UFCON_DEFAULT,
},
@@ -2721,7 +2721,7 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
.clksel_mask = S3C6400_UCON_CLKMASK,
.clksel_shift = S3C6400_UCON_CLKSHIFT,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = S3C2410_UCON_DEFAULT,
.ufcon = S3C2410_UFCON_DEFAULT,
},
@@ -2749,7 +2749,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
.clksel_mask = S5PV210_UCON_CLKMASK,
.clksel_shift = S5PV210_UCON_CLKSHIFT,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = S5PV210_UCON_DEFAULT,
.ufcon = S5PV210_UFCON_DEFAULT,
},
@@ -2778,7 +2778,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
.clksel_mask = 0, \
.clksel_shift = 0, \
}, \
- .def_cfg = &(struct s3c2410_uartcfg) { \
+ .def_cfg = { \
.ucon = S5PV210_UCON_DEFAULT, \
.ufcon = S5PV210_UFCON_DEFAULT, \
.has_fracval = 1, \
@@ -2827,7 +2827,7 @@ static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
.clksel_mask = 0,
.clksel_shift = 0,
},
- .def_cfg = &(struct s3c2410_uartcfg) {
+ .def_cfg = {
.ucon = APPLE_S5L_UCON_DEFAULT,
.ufcon = S3C2410_UFCON_DEFAULT,
},
--
2.32.0

2022-03-07 06:45:02

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 5/7] tty: serial: samsung: constify s3c24xx_serial_drv_data members

On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
> The driver data (struct s3c24xx_serial_drv_data) is never modified, so
> also its members can be make const. Except code style this has no

s/make/made/ if you do a v2.

> impact because the structure itself is always a const.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Jiri Slaby <[email protected]>

> ---
> drivers/tty/serial/samsung_tty.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index 279c413f2300..eecefff5c4a4 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -85,9 +85,9 @@ struct s3c24xx_uart_info {
> };
>
> struct s3c24xx_serial_drv_data {
> - struct s3c24xx_uart_info info;
> - struct s3c2410_uartcfg def_cfg;
> - unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
> + const struct s3c24xx_uart_info info;
> + const struct s3c2410_uartcfg def_cfg;
> + const unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
> };
>
> struct s3c24xx_uart_dma {


--
js
suse labs

2022-03-07 07:48:19

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 3/7] tty: serial: samsung: constify s3c24xx_serial_drv_data

On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
> The driver data (struct s3c24xx_serial_drv_data) is only used to
> initialize the driver properly and is not modified. Make it const.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
...
> @@ -2726,13 +2726,13 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
> .ufcon = S3C2410_UFCON_DEFAULT,
> },
> };
> -#define S3C6400_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c6400_serial_drv_data)
> +#define S3C6400_SERIAL_DRV_DATA (&s3c6400_serial_drv_data)
> #else
> -#define S3C6400_SERIAL_DRV_DATA (kernel_ulong_t)NULL
> +#define S3C6400_SERIAL_DRV_DATA (NULL)
> #endif
>
> #ifdef CONFIG_CPU_S5PV210
> -static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> +static const struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> .info = {
> .name = "Samsung S5PV210 UART",
> .type = TYPE_S3C6400,
> @@ -2755,9 +2755,9 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> },
> .fifosize = { 256, 64, 16, 16 },
> };
> -#define S5PV210_SERIAL_DRV_DATA ((kernel_ulong_t)&s5pv210_serial_drv_data)
> +#define S5PV210_SERIAL_DRV_DATA (&s5pv210_serial_drv_data)
> #else
> -#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
> +#define S5PV210_SERIAL_DRV_DATA (NULL)


All these changes are somehow irrelevant to the subject/to this patch.
Care to put them into a separate patch?

There is no need to put NULL into parentheses.

> @@ -3062,7 +3062,6 @@ static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
> OF_EARLYCON_DECLARE(s5l, "apple,s5l-uart", apple_s5l_early_console_setup);
> #endif
>
> -MODULE_ALIAS("platform:samsung-uart");

This is as well a different change to what is claimed.

thanks,
--
js
suse labs

2022-03-07 07:52:43

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 3/7] tty: serial: samsung: constify s3c24xx_serial_drv_data

On 07/03/2022 07:36, Jiri Slaby wrote:
> On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
>> The driver data (struct s3c24xx_serial_drv_data) is only used to
>> initialize the driver properly and is not modified. Make it const.
>>
>> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ...
>> @@ -2726,13 +2726,13 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
>> .ufcon = S3C2410_UFCON_DEFAULT,
>> },
>> };
>> -#define S3C6400_SERIAL_DRV_DATA ((kernel_ulong_t)&s3c6400_serial_drv_data)
>> +#define S3C6400_SERIAL_DRV_DATA (&s3c6400_serial_drv_data)
>> #else
>> -#define S3C6400_SERIAL_DRV_DATA (kernel_ulong_t)NULL
>> +#define S3C6400_SERIAL_DRV_DATA (NULL)
>> #endif
>>
>> #ifdef CONFIG_CPU_S5PV210
>> -static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
>> +static const struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
>> .info = {
>> .name = "Samsung S5PV210 UART",
>> .type = TYPE_S3C6400,
>> @@ -2755,9 +2755,9 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
>> },
>> .fifosize = { 256, 64, 16, 16 },
>> };
>> -#define S5PV210_SERIAL_DRV_DATA ((kernel_ulong_t)&s5pv210_serial_drv_data)
>> +#define S5PV210_SERIAL_DRV_DATA (&s5pv210_serial_drv_data)
>> #else
>> -#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
>> +#define S5PV210_SERIAL_DRV_DATA (NULL)
>
>
> All these changes are somehow irrelevant to the subject/to this patch.
> Care to put them into a separate patch?
>
> There is no need to put NULL into parentheses.

I wanted to make it consistent with the other, but indeed I can skip it.

>
>> @@ -3062,7 +3062,6 @@ static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
>> OF_EARLYCON_DECLARE(s5l, "apple,s5l-uart", apple_s5l_early_console_setup);
>> #endif
>>
>> -MODULE_ALIAS("platform:samsung-uart");
>
> This is as well a different change to what is claimed.

D'oh, this was not intended. Thanks for spotting it.


Best regards,
Krzysztof

2022-03-07 08:16:42

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 2/7] tty: serial: samsung: embed s3c2410_uartcfg in parent structure

On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
> Embed "struct s3c2410_uartcfg" directly as a member of "struct
> s3c24xx_serial_drv_data" instead of keeping it as a pointer. This makes
> the code clearer (obvious ownership of "s3c2410_uartcfg
> s3c24xx_serial_drv_data") and saves one pointer.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Jiri Slaby <[email protected]>


> ---
> drivers/tty/serial/samsung_tty.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index aa5678d03704..a9a75b5b9705 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -86,7 +86,7 @@ struct s3c24xx_uart_info {
>
> struct s3c24xx_serial_drv_data {
> struct s3c24xx_uart_info info;
> - struct s3c2410_uartcfg *def_cfg;
> + struct s3c2410_uartcfg def_cfg;
> unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
> };
>
> @@ -2200,7 +2200,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
> ourport->info = &ourport->drv_data->info;
> ourport->cfg = (dev_get_platdata(&pdev->dev)) ?
> dev_get_platdata(&pdev->dev) :
> - ourport->drv_data->def_cfg;
> + &ourport->drv_data->def_cfg;
>
> switch (ourport->info->type) {
> case TYPE_S3C24XX:
> @@ -2632,7 +2632,7 @@ static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
> .clksel_mask = S3C2410_UCON_CLKMASK,
> .clksel_shift = S3C2410_UCON_CLKSHIFT,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = S3C2410_UCON_DEFAULT,
> .ufcon = S3C2410_UFCON_DEFAULT,
> },
> @@ -2661,7 +2661,7 @@ static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
> .clksel_mask = S3C2412_UCON_CLKMASK,
> .clksel_shift = S3C2412_UCON_CLKSHIFT,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = S3C2410_UCON_DEFAULT,
> .ufcon = S3C2410_UFCON_DEFAULT,
> },
> @@ -2692,7 +2692,7 @@ static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
> .clksel_shift = S3C2412_UCON_CLKSHIFT,
> .ucon_mask = S3C2440_UCON0_DIVMASK,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = S3C2410_UCON_DEFAULT,
> .ufcon = S3C2410_UFCON_DEFAULT,
> },
> @@ -2721,7 +2721,7 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
> .clksel_mask = S3C6400_UCON_CLKMASK,
> .clksel_shift = S3C6400_UCON_CLKSHIFT,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = S3C2410_UCON_DEFAULT,
> .ufcon = S3C2410_UFCON_DEFAULT,
> },
> @@ -2749,7 +2749,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> .clksel_mask = S5PV210_UCON_CLKMASK,
> .clksel_shift = S5PV210_UCON_CLKSHIFT,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = S5PV210_UCON_DEFAULT,
> .ufcon = S5PV210_UFCON_DEFAULT,
> },
> @@ -2778,7 +2778,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> .clksel_mask = 0, \
> .clksel_shift = 0, \
> }, \
> - .def_cfg = &(struct s3c2410_uartcfg) { \
> + .def_cfg = { \
> .ucon = S5PV210_UCON_DEFAULT, \
> .ufcon = S5PV210_UFCON_DEFAULT, \
> .has_fracval = 1, \
> @@ -2827,7 +2827,7 @@ static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
> .clksel_mask = 0,
> .clksel_shift = 0,
> },
> - .def_cfg = &(struct s3c2410_uartcfg) {
> + .def_cfg = {
> .ucon = APPLE_S5L_UCON_DEFAULT,
> .ufcon = S3C2410_UFCON_DEFAULT,
> },


--
js
suse labs

2022-03-07 09:16:13

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 5/7] tty: serial: samsung: constify s3c24xx_serial_drv_data members

On 07/03/2022 07:38, Jiri Slaby wrote:
> On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
>> The driver data (struct s3c24xx_serial_drv_data) is never modified, so
>> also its members can be make const. Except code style this has no
>
> s/make/made/ if you do a v2.

Sure, I'll send a v2.

>
>> impact because the structure itself is always a const.
>>
>> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>
> Reviewed-by: Jiri Slaby <[email protected]>
>
>> ---
>> drivers/tty/serial/samsung_tty.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
>> index 279c413f2300..eecefff5c4a4 100644
>> --- a/drivers/tty/serial/samsung_tty.c
>> +++ b/drivers/tty/serial/samsung_tty.c
>> @@ -85,9 +85,9 @@ struct s3c24xx_uart_info {
>> };
>>
>> struct s3c24xx_serial_drv_data {
>> - struct s3c24xx_uart_info info;
>> - struct s3c2410_uartcfg def_cfg;
>> - unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
>> + const struct s3c24xx_uart_info info;
>> + const struct s3c2410_uartcfg def_cfg;
>> + const unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
>> };
>>
>> struct s3c24xx_uart_dma {
>
>


Best regards,
Krzysztof

2022-03-07 09:54:49

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 1/7] tty: serial: samsung: embed s3c24xx_uart_info in parent structure

On 04. 03. 22, 9:03, Krzysztof Kozlowski wrote:
> Embed "struct s3c24xx_uart_info" directly as a member of "struct
> s3c24xx_serial_drv_data" instead of keeping it as a pointer. This makes
> the code clearer (obvious ownership of "struct s3c24xx_serial_drv_data")
> and saves one pointer.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>

Reviewed-by: Jiri Slaby <[email protected]>

> ---
> drivers/tty/serial/samsung_tty.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index d002a4e48ed9..aa5678d03704 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -85,7 +85,7 @@ struct s3c24xx_uart_info {
> };
>
> struct s3c24xx_serial_drv_data {
> - struct s3c24xx_uart_info *info;
> + struct s3c24xx_uart_info info;
> struct s3c2410_uartcfg *def_cfg;
> unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
> };
> @@ -2197,7 +2197,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
> }
>
> ourport->baudclk = ERR_PTR(-EINVAL);
> - ourport->info = ourport->drv_data->info;
> + ourport->info = &ourport->drv_data->info;
> ourport->cfg = (dev_get_platdata(&pdev->dev)) ?
> dev_get_platdata(&pdev->dev) :
> ourport->drv_data->def_cfg;
> @@ -2616,7 +2616,7 @@ static struct console s3c24xx_serial_console = {
>
> #ifdef CONFIG_CPU_S3C2410
> static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Samsung S3C2410 UART",
> .type = TYPE_S3C24XX,
> .port_type = PORT_S3C2410,
> @@ -2644,7 +2644,7 @@ static struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
>
> #ifdef CONFIG_CPU_S3C2412
> static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Samsung S3C2412 UART",
> .type = TYPE_S3C24XX,
> .port_type = PORT_S3C2412,
> @@ -2674,7 +2674,7 @@ static struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
> #if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
> defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
> static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Samsung S3C2440 UART",
> .type = TYPE_S3C24XX,
> .port_type = PORT_S3C2440,
> @@ -2704,7 +2704,7 @@ static struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
>
> #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
> static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Samsung S3C6400 UART",
> .type = TYPE_S3C6400,
> .port_type = PORT_S3C6400,
> @@ -2733,7 +2733,7 @@ static struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
>
> #ifdef CONFIG_CPU_S5PV210
> static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Samsung S5PV210 UART",
> .type = TYPE_S3C6400,
> .port_type = PORT_S3C6400,
> @@ -2762,7 +2762,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
>
> #if defined(CONFIG_ARCH_EXYNOS)
> #define EXYNOS_COMMON_SERIAL_DRV_DATA() \
> - .info = &(struct s3c24xx_uart_info) { \
> + .info = { \
> .name = "Samsung Exynos UART", \
> .type = TYPE_S3C6400, \
> .port_type = PORT_S3C6400, \
> @@ -2811,7 +2811,7 @@ static struct s3c24xx_serial_drv_data exynos850_serial_drv_data = {
>
> #ifdef CONFIG_ARCH_APPLE
> static struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
> - .info = &(struct s3c24xx_uart_info) {
> + .info = {
> .name = "Apple S5L UART",
> .type = TYPE_APPLE_S5L,
> .port_type = PORT_8250,


--
js
suse labs