Skip to content

Commit

Permalink
serial: sh-sci: Move overrun_bit and error_mask fields out of pdata
Browse files Browse the repository at this point in the history
None of the fields is ever set by board code, and both of them are set
in the driver at probe time. Move them out of struct plat_sci_port to
struct sci_port.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
  • Loading branch information
Laurent Pinchart authored and Simon Horman committed Dec 24, 2013
1 parent 1fcc91a commit 3ae988d
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 31 deletions.
50 changes: 23 additions & 27 deletions drivers/tty/serial/sh-sci.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ struct sci_port {

/* Platform configuration */
struct plat_sci_port *cfg;
int overrun_bit;
unsigned int error_mask;


/* Break timer */
struct timer_list break_timer;
Expand Down Expand Up @@ -760,19 +763,15 @@ static int sci_handle_errors(struct uart_port *port)
struct tty_port *tport = &port->state->port;
struct sci_port *s = to_sci_port(port);

/*
* Handle overruns, if supported.
*/
if (s->cfg->overrun_bit != SCIx_NOT_SUPPORTED) {
if (status & (1 << s->cfg->overrun_bit)) {
port->icount.overrun++;
/* Handle overruns */
if (status & (1 << s->overrun_bit)) {
port->icount.overrun++;

/* overrun error */
if (tty_insert_flip_char(tport, 0, TTY_OVERRUN))
copied++;
/* overrun error */
if (tty_insert_flip_char(tport, 0, TTY_OVERRUN))
copied++;

dev_notice(port->dev, "overrun error");
}
dev_notice(port->dev, "overrun error");
}

if (status & SCxSR_FER(port)) {
Expand Down Expand Up @@ -834,7 +833,7 @@ static int sci_handle_fifo_overrun(struct uart_port *port)
if (!reg->size)
return 0;

if ((serial_port_in(port, SCLSR) & (1 << s->cfg->overrun_bit))) {
if ((serial_port_in(port, SCLSR) & (1 << s->overrun_bit))) {
serial_port_out(port, SCLSR, 0);

port->icount.overrun++;
Expand Down Expand Up @@ -2253,28 +2252,25 @@ static int sci_init_single(struct platform_device *dev,
/*
* Establish some sensible defaults for the error detection.
*/
if (!p->error_mask)
p->error_mask = (p->type == PORT_SCI) ?
sci_port->error_mask = (p->type == PORT_SCI) ?
SCI_DEFAULT_ERROR_MASK : SCIF_DEFAULT_ERROR_MASK;

/*
* Establish sensible defaults for the overrun detection, unless
* the part has explicitly disabled support for it.
*/
if (p->overrun_bit != SCIx_NOT_SUPPORTED) {
if (p->type == PORT_SCI)
p->overrun_bit = 5;
else if (p->scbrr_algo_id == SCBRR_ALGO_4)
p->overrun_bit = 9;
else
p->overrun_bit = 0;
if (p->type == PORT_SCI)
sci_port->overrun_bit = 5;
else if (p->scbrr_algo_id == SCBRR_ALGO_4)
sci_port->overrun_bit = 9;
else
sci_port->overrun_bit = 0;

/*
* Make the error mask inclusive of overrun detection, if
* supported.
*/
p->error_mask |= (1 << p->overrun_bit);
}
/*
* Make the error mask inclusive of overrun detection, if
* supported.
*/
sci_port->error_mask |= 1 << sci_port->overrun_bit;

port->type = p->type;
port->flags = UPF_FIXED_PORT | p->flags;
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/serial/sh-sci.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#define SCxSR_PER(port) (((port)->type == PORT_SCI) ? SCI_PER : SCIF_PER)
#define SCxSR_BRK(port) (((port)->type == PORT_SCI) ? 0x00 : SCIF_BRK)

#define SCxSR_ERRORS(port) (to_sci_port(port)->cfg->error_mask)
#define SCxSR_ERRORS(port) (to_sci_port(port)->error_mask)

#if defined(CONFIG_CPU_SUBTYPE_SH7705) || \
defined(CONFIG_CPU_SUBTYPE_SH7720) || \
Expand Down
3 changes: 0 additions & 3 deletions include/linux/serial_sci.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,6 @@ struct plat_sci_port {
/*
* Platform overrides if necessary, defaults otherwise.
*/
int overrun_bit;
unsigned int error_mask;

int port_reg;
unsigned char regshift;
unsigned char regtype;
Expand Down

0 comments on commit 3ae988d

Please sign in to comment.