#define portaddrl(port, reg) \
        ((unsigned long *)(unsigned long)((port)->membase + (reg)))
 
-static u32 rd_reg(struct uart_port *port, u32 reg)
+static u32 rd_reg(const struct uart_port *port, u32 reg)
 {
        switch (port->iotype) {
        case UPIO_MEM:
 
 #define rd_regl(port, reg) (readl_relaxed(portaddr(port, reg)))
 
-static void wr_reg(struct uart_port *port, u32 reg, u32 val)
+static void wr_reg(const struct uart_port *port, u32 reg, u32 val)
 {
        switch (port->iotype) {
        case UPIO_MEM:
 
 /* Byte-order aware bit setting/clearing functions. */
 
-static inline void s3c24xx_set_bit(struct uart_port *port, int idx,
+static inline void s3c24xx_set_bit(const struct uart_port *port, int idx,
                                   unsigned int reg)
 {
        unsigned long flags;
        local_irq_restore(flags);
 }
 
-static inline void s3c24xx_clear_bit(struct uart_port *port, int idx,
+static inline void s3c24xx_clear_bit(const struct uart_port *port, int idx,
                                     unsigned int reg)
 {
        unsigned long flags;
        local_irq_restore(flags);
 }
 
-static inline struct s3c24xx_uart_port *to_ourport(const struct uart_port *port)
+static inline struct s3c24xx_uart_port *to_ourport(struct uart_port *port)
 {
        return container_of(port, struct s3c24xx_uart_port, port);
 }
 
 /* translate a port to the device name */
 
-static inline const char *s3c24xx_serial_portname(struct uart_port *port)
+static inline const char *s3c24xx_serial_portname(const struct uart_port *port)
 {
        return to_platform_device(port->dev)->name;
 }
 
-static int s3c24xx_serial_txempty_nofifo(struct uart_port *port)
+static int s3c24xx_serial_txempty_nofifo(const struct uart_port *port)
 {
        return rd_regl(port, S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE;
 }
 
 static void enable_tx_dma(struct s3c24xx_uart_port *ourport)
 {
-       struct uart_port *port = &ourport->port;
+       const struct uart_port *port = &ourport->port;
        u32 ucon;
 
        /* Mask Tx interrupt */
 
 static void enable_tx_pio(struct s3c24xx_uart_port *ourport)
 {
-       struct uart_port *port = &ourport->port;
+       const struct uart_port *port = &ourport->port;
        u32 ucon, ufcon;
 
        /* Set ufcon txtrig */
 }
 
 static inline const struct s3c2410_uartcfg
-       *s3c24xx_port_to_cfg(struct uart_port *port)
+       *s3c24xx_port_to_cfg(const struct uart_port *port)
 {
-       struct s3c24xx_uart_port *ourport;
+       const struct s3c24xx_uart_port *ourport;
 
        if (port->dev == NULL)
                return NULL;
        return ourport->cfg;
 }
 
-static int s3c24xx_serial_rx_fifocnt(struct s3c24xx_uart_port *ourport,
+static int s3c24xx_serial_rx_fifocnt(const struct s3c24xx_uart_port *ourport,
                                     unsigned long ufstat)
 {
        const struct s3c24xx_uart_info *info = ourport->info;
 /* interrupt handler for s3c64xx and later SoC's.*/
 static irqreturn_t s3c64xx_serial_handle_irq(int irq, void *id)
 {
-       struct s3c24xx_uart_port *ourport = id;
-       struct uart_port *port = &ourport->port;
+       const struct s3c24xx_uart_port *ourport = id;
+       const struct uart_port *port = &ourport->port;
        unsigned int pend = rd_regl(port, S3C64XX_UINTP);
        irqreturn_t ret = IRQ_HANDLED;
 
 /* interrupt handler for Apple SoC's.*/
 static irqreturn_t apple_serial_handle_irq(int irq, void *id)
 {
-       struct s3c24xx_uart_port *ourport = id;
-       struct uart_port *port = &ourport->port;
+       const struct s3c24xx_uart_port *ourport = id;
+       const struct uart_port *port = &ourport->port;
        unsigned int pend = rd_regl(port, S3C2410_UTRSTAT);
        irqreturn_t ret = IRQ_NONE;
 
  * This table takes the fractional value of the baud divisor and gives
  * the recommended setting for the UDIVSLOT register.
  */
-static u16 udivslot_table[16] = {
+static const u16 udivslot_table[16] = {
        [0] = 0x0000,
        [1] = 0x0080,
        [2] = 0x0808,
 
 static const char *s3c24xx_serial_type(struct uart_port *port)
 {
-       struct s3c24xx_uart_port *ourport = to_ourport(port);
+       const struct s3c24xx_uart_port *ourport = to_ourport(port);
 
        switch (ourport->info->type) {
        case TYPE_S3C24XX:
 
 static int s3c24xx_serial_get_poll_char(struct uart_port *port)
 {
-       struct s3c24xx_uart_port *ourport = to_ourport(port);
+       const struct s3c24xx_uart_port *ourport = to_ourport(port);
        unsigned int ufstat;
 
        ufstat = rd_regl(port, S3C2410_UFSTAT);
  * 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:
        u32 rxfifo_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)
                ;