-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Ben Dooks
committed
Jul 3, 2008
1 parent
1552cfd
commit 2e15f4a
Showing
10 changed files
with
1,940 additions
and
1,846 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 6fc601e37bbb4045ee0afefc76b64284ea800c89 | ||
refs/heads/master: b497549a035c2a81b71c7a27f2b00c8a16c09423 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* linux/drivers/serial/s3c240.c | ||
* | ||
* Driver for Samsung SoC onboard UARTs. | ||
* | ||
* Ben Dooks, Copyright (c) 2003-2005 Simtec Electronics | ||
* http://armlinux.simtec.co.uk/ | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/module.h> | ||
#include <linux/ioport.h> | ||
#include <linux/io.h> | ||
#include <linux/platform_device.h> | ||
|
||
#include <asm/irq.h> | ||
|
||
#include <asm/hardware.h> | ||
|
||
#include <asm/plat-s3c/regs-serial.h> | ||
#include <asm/arch/regs-gpio.h> | ||
|
||
#include "samsung.h" | ||
|
||
static int s3c2400_serial_getsource(struct uart_port *port, | ||
struct s3c24xx_uart_clksrc *clk) | ||
{ | ||
clk->divisor = 1; | ||
clk->name = "pclk"; | ||
|
||
return 0; | ||
} | ||
|
||
static int s3c2400_serial_setsource(struct uart_port *port, | ||
struct s3c24xx_uart_clksrc *clk) | ||
{ | ||
return 0; | ||
} | ||
|
||
static int s3c2400_serial_resetport(struct uart_port *port, | ||
struct s3c2410_uartcfg *cfg) | ||
{ | ||
dbg("s3c2400_serial_resetport: port=%p (%08lx), cfg=%p\n", | ||
port, port->mapbase, cfg); | ||
|
||
wr_regl(port, S3C2410_UCON, cfg->ucon); | ||
wr_regl(port, S3C2410_ULCON, cfg->ulcon); | ||
|
||
/* reset both fifos */ | ||
|
||
wr_regl(port, S3C2410_UFCON, cfg->ufcon | S3C2410_UFCON_RESETBOTH); | ||
wr_regl(port, S3C2410_UFCON, cfg->ufcon); | ||
|
||
return 0; | ||
} | ||
|
||
static struct s3c24xx_uart_info s3c2400_uart_inf = { | ||
.name = "Samsung S3C2400 UART", | ||
.type = PORT_S3C2400, | ||
.fifosize = 16, | ||
.rx_fifomask = S3C2410_UFSTAT_RXMASK, | ||
.rx_fifoshift = S3C2410_UFSTAT_RXSHIFT, | ||
.rx_fifofull = S3C2410_UFSTAT_RXFULL, | ||
.tx_fifofull = S3C2410_UFSTAT_TXFULL, | ||
.tx_fifomask = S3C2410_UFSTAT_TXMASK, | ||
.tx_fifoshift = S3C2410_UFSTAT_TXSHIFT, | ||
.get_clksrc = s3c2400_serial_getsource, | ||
.set_clksrc = s3c2400_serial_setsource, | ||
.reset_port = s3c2400_serial_resetport, | ||
}; | ||
|
||
static int s3c2400_serial_probe(struct platform_device *dev) | ||
{ | ||
return s3c24xx_serial_probe(dev, &s3c2400_uart_inf); | ||
} | ||
|
||
static struct platform_driver s3c2400_serial_drv = { | ||
.probe = s3c2400_serial_probe, | ||
.remove = s3c24xx_serial_remove, | ||
.driver = { | ||
.name = "s3c2400-uart", | ||
.owner = THIS_MODULE, | ||
}, | ||
}; | ||
|
||
s3c24xx_console_init(&s3c2400_serial_drv, &s3c2400_uart_inf); | ||
|
||
static inline int s3c2400_serial_init(void) | ||
{ | ||
return s3c24xx_serial_init(&s3c2400_serial_drv, &s3c2400_uart_inf); | ||
} | ||
|
||
static inline void s3c2400_serial_exit(void) | ||
{ | ||
platform_driver_unregister(&s3c2400_serial_drv); | ||
} | ||
|
||
module_init(s3c2400_serial_init); | ||
module_exit(s3c2400_serial_exit); | ||
|
||
MODULE_LICENSE("GPL v2"); | ||
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | ||
MODULE_DESCRIPTION("Samsung S3C2400 SoC Serial port driver"); | ||
MODULE_ALIAS("platform:s3c2400-uart"); |
Oops, something went wrong.