Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173501
b: refs/heads/master
c: edad1f2
h: refs/heads/master
i:
  173499: 017a42d
v: v3
  • Loading branch information
Paul Mundt committed Nov 25, 2009
1 parent 9bddb56 commit abf483d
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 55 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6ba653830c85a37d0a054f1e43d9b51e59d1150b
refs/heads/master: edad1f208e6edabb917e4f8a33c7e45bf78bb79d
2 changes: 1 addition & 1 deletion trunk/drivers/serial/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ config SERIAL_IP22_ZILOG_CONSOLE

config SERIAL_SH_SCI
tristate "SuperH SCI(F) serial port support"
depends on SUPERH || H8300
depends on HAVE_CLK && (SUPERH || H8300)
select SERIAL_CORE

config SERIAL_SH_SCI_NR_UARTS
Expand Down
53 changes: 1 addition & 52 deletions trunk/drivers/serial/sh-sci.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
#include <linux/list.h>

#ifdef CONFIG_SUPERH
#include <asm/clock.h>
#include <asm/sh_bios.h>
#endif

Expand Down Expand Up @@ -79,22 +78,18 @@ struct sci_port {
struct timer_list break_timer;
int break_flag;

#ifdef CONFIG_HAVE_CLK
/* Interface clock */
struct clk *iclk;
/* Data clock */
struct clk *dclk;
#endif

struct list_head node;
};

struct sh_sci_priv {
spinlock_t lock;
struct list_head ports;

#ifdef CONFIG_HAVE_CLK
struct notifier_block clk_nb;
#endif
};

/* Function prototypes */
Expand Down Expand Up @@ -156,32 +151,6 @@ static void sci_poll_put_char(struct uart_port *port, unsigned char c)
}
#endif /* CONFIG_CONSOLE_POLL || CONFIG_SERIAL_SH_SCI_CONSOLE */

#if defined(__H8300S__)
enum { sci_disable, sci_enable };

static void h8300_sci_config(struct uart_port *port, unsigned int ctrl)
{
volatile unsigned char *mstpcrl = (volatile unsigned char *)MSTPCRL;
int ch = (port->mapbase - SMR0) >> 3;
unsigned char mask = 1 << (ch+1);

if (ctrl == sci_disable)
*mstpcrl |= mask;
else
*mstpcrl &= ~mask;
}

static void h8300_sci_enable(struct uart_port *port)
{
h8300_sci_config(port, sci_enable);
}

static void h8300_sci_disable(struct uart_port *port)
{
h8300_sci_config(port, sci_disable);
}
#endif

#if defined(__H8300H__) || defined(__H8300S__)
static void sci_init_pins(struct uart_port *port, unsigned int cflag)
{
Expand Down Expand Up @@ -733,7 +702,6 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr)
return ret;
}

#ifdef CONFIG_HAVE_CLK
/*
* Here we define a transistion notifier so that we can update all of our
* ports' baud rate when the peripheral clock changes.
Expand All @@ -751,7 +719,6 @@ static int sci_notifier(struct notifier_block *self,
spin_lock_irqsave(&priv->lock, flags);
list_for_each_entry(sci_port, &priv->ports, node)
sci_port->port.uartclk = clk_get_rate(sci_port->dclk);

spin_unlock_irqrestore(&priv->lock, flags);
}

Expand All @@ -778,7 +745,6 @@ static void sci_clk_disable(struct uart_port *port)

clk_disable(sci_port->dclk);
}
#endif

static int sci_request_irq(struct sci_port *port)
{
Expand Down Expand Up @@ -1077,21 +1043,10 @@ static void __devinit sci_init_single(struct platform_device *dev,
sci_port->port.iotype = UPIO_MEM;
sci_port->port.line = index;
sci_port->port.fifosize = 1;

#if defined(__H8300H__) || defined(__H8300S__)
#ifdef __H8300S__
sci_port->enable = h8300_sci_enable;
sci_port->disable = h8300_sci_disable;
#endif
sci_port->port.uartclk = CONFIG_CPU_CLOCK;
#elif defined(CONFIG_HAVE_CLK)
sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL;
sci_port->dclk = clk_get(&dev->dev, "peripheral_clk");
sci_port->enable = sci_clk_enable;
sci_port->disable = sci_clk_disable;
#else
#error "Need a valid uartclk"
#endif

sci_port->break_timer.data = (unsigned long)sci_port;
sci_port->break_timer.function = sci_break_timer;
Expand All @@ -1106,7 +1061,6 @@ static void __devinit sci_init_single(struct platform_device *dev,
sci_port->type = sci_port->port.type = p->type;

memcpy(&sci_port->irqs, &p->irqs, sizeof(p->irqs));

}

#ifdef CONFIG_SERIAL_SH_SCI_CONSOLE
Expand Down Expand Up @@ -1239,14 +1193,11 @@ static int sci_remove(struct platform_device *dev)
struct sci_port *p;
unsigned long flags;

#ifdef CONFIG_HAVE_CLK
cpufreq_unregister_notifier(&priv->clk_nb, CPUFREQ_TRANSITION_NOTIFIER);
#endif

spin_lock_irqsave(&priv->lock, flags);
list_for_each_entry(p, &priv->ports, node)
uart_remove_one_port(&sci_uart_driver, &p->port);

spin_unlock_irqrestore(&priv->lock, flags);

kfree(priv);
Expand Down Expand Up @@ -1307,10 +1258,8 @@ static int __devinit sci_probe(struct platform_device *dev)
spin_lock_init(&priv->lock);
platform_set_drvdata(dev, priv);

#ifdef CONFIG_HAVE_CLK
priv->clk_nb.notifier_call = sci_notifier;
cpufreq_register_notifier(&priv->clk_nb, CPUFREQ_TRANSITION_NOTIFIER);
#endif

if (dev->id != -1) {
ret = sci_probe_single(dev, dev->id, p, &sci_ports[dev->id]);
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/serial/sh-sci.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <linux/serial_core.h>
#include <asm/io.h>
#include <linux/io.h>
#include <linux/gpio.h>

#if defined(CONFIG_H83007) || defined(CONFIG_H83068)
Expand Down

0 comments on commit abf483d

Please sign in to comment.