diff mbox series

[v2,3/7] tty: serial: samsung: constify s3c24xx_serial_drv_data

Message ID 20220307080925.54131-2-krzysztof.kozlowski@canonical.com
State New
Headers show
Series tty: serial: samsung: minor fixes/cleanups | expand

Commit Message

Krzysztof Kozlowski March 7, 2022, 8:09 a.m. UTC
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 <krzysztof.kozlowski@canonical.com>
---
 drivers/tty/serial/samsung_tty.c | 130 +++++++++++++++----------------
 1 file changed, 65 insertions(+), 65 deletions(-)

Comments

Jiri Slaby (SUSE) March 7, 2022, 8:33 a.m. UTC | #1
On 07. 03. 22, 9:09, 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.
...
> @@ -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

Yet, I still don't see why the switch from ulong->ptr happens in this 
"constify it" patch?

thanks,
Alim Akhtar March 7, 2022, 6:18 p.m. UTC | #2
>-----Original Message-----
>From: Krzysztof Kozlowski [mailto:krzysztof.kozlowski@canonical.com]
>Sent: Monday, March 7, 2022 1:39 PM
>To: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>; Alim Akhtar
><alim.akhtar@samsung.com>; Greg Kroah-Hartman
><gregkh@linuxfoundation.org>; Jiri Slaby <jirislaby@kernel.org>; linux-arm-
>kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.org; linux-
>serial@vger.kernel.org; linux-kernel@vger.kernel.org
>Subject: [PATCH v2 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 <krzysztof.kozlowski@canonical.com>
>---

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

> drivers/tty/serial/samsung_tty.c | 130 +++++++++++++++----------------
> 1 file changed, 65 insertions(+), 65 deletions(-)
>
>diff --git a/drivers/tty/serial/samsung_tty.c
>b/drivers/tty/serial/samsung_tty.c
>index a9a75b5b9705..c4b13f2d6e26 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);
>--
>2.32.0
Krzysztof Kozlowski March 8, 2022, 8:06 a.m. UTC | #3
On 07/03/2022 09:40, Krzysztof Kozlowski wrote:
> On 07/03/2022 09:33, Jiri Slaby wrote:
>> On 07. 03. 22, 9:09, 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.
>> ...
>>> @@ -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
>>
>> Yet, I still don't see why the switch from ulong->ptr happens in this 
>> "constify it" patch?
> 
> All these defines S5PV210_SERIAL_DRV_DATA and so on are now const and
> are assigned to of_device_id.data (s3c24xx_uart_dt_match). Before, these
> were assigned with a cast:
> 
> static const struct of_device_id s3c24xx_uart_dt_match[] = {
> 	{ .compatible = "samsung,s5pv210-uart",
> 
> 	.data = (void *)S5PV210_SERIAL_DRV_DATA }
> 
> but since the actual data structure is const, I want to drop the cast.
> Casting const via (void *) might hide some possible issues, e.g. if
> of_device_id.data becomes actually non-const. There is no particular
> issue here, because of_device_id.data and S5PV210_SERIAL_DRV_DATA are
> const. But also because they are both const now, I want to drop the cast
> via void *.
> 
> When (void *) is dropped, the S5PV210_SERIAL_DRV_DATA cannot be
> kernel_ulong_t:
> 
> ../drivers/tty/serial/samsung_tty.c:2753:33: warning: initialization of
> ‘const void *’ from ‘long unsigned int’ makes pointer from integer
> without a cast [-Wint-conversion]
> 
>  2753 | #define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
> 

I will split the casts removal to separate patch. I hope this clarifies
a bit.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index a9a75b5b9705..c4b13f2d6e26 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);