Commit ccf68e59 authored by sonic zhang's avatar sonic zhang Committed by Greg Kroah-Hartman

serial: fit blackfin uart over sport driver into common uart infrastructure

Fit blackfin uart over sport driver into common uart inftrastructure.  It
is based on the early platform interfaces to get the platform data early
when the console is initilized.

1. Enable sport uart driver to change uart baud, data bit, stop bit at
   runtime.  Bind the index of uart device nodes to physical index of
   sports.

2. Move all platform data into arch specific board files.  Register
   and probe platform device data in both early and normal stages.

3. Console is registered in sport uart driver as well.

4. Remove 500 us block waiting in sport tx stop code by putting a
   dummy data into tx fifo to make sure the sport tx stops when all bytes
   are shifted out except for the dummy data.

5. clean up a bit and fix up coding style.
Signed-off-by: default avatarSonic Zhang <sonic.zhang@analog.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Bryan Wu <cooloney@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 13dda80e
...@@ -1418,38 +1418,34 @@ config SERIAL_BFIN_SPORT ...@@ -1418,38 +1418,34 @@ config SERIAL_BFIN_SPORT
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called bfin_sport_uart. module will be called bfin_sport_uart.
choice config SERIAL_BFIN_SPORT_CONSOLE
prompt "Baud rate for Blackfin SPORT UART" bool "Console on Blackfin sport emulated uart"
depends on SERIAL_BFIN_SPORT depends on SERIAL_BFIN_SPORT=y
default SERIAL_SPORT_BAUD_RATE_57600 select SERIAL_CORE_CONSOLE
help
Choose a baud rate for the SPORT UART, other uart settings are
8 bit, 1 stop bit, no parity, no flow control.
config SERIAL_SPORT_BAUD_RATE_115200
bool "115200"
config SERIAL_SPORT_BAUD_RATE_57600
bool "57600"
config SERIAL_SPORT_BAUD_RATE_38400 config SERIAL_BFIN_SPORT0_UART
bool "38400" bool "Enable UART over SPORT0"
depends on SERIAL_BFIN_SPORT && !(BF542 || BF542M || BF544 || BF544M)
help
Enable UART over SPORT0
config SERIAL_SPORT_BAUD_RATE_19200 config SERIAL_BFIN_SPORT1_UART
bool "19200" bool "Enable UART over SPORT1"
depends on SERIAL_BFIN_SPORT
help
Enable UART over SPORT1
config SERIAL_SPORT_BAUD_RATE_9600 config SERIAL_BFIN_SPORT2_UART
bool "9600" bool "Enable UART over SPORT2"
endchoice depends on SERIAL_BFIN_SPORT && (BF54x || BF538 || BF539)
help
Enable UART over SPORT2
config SPORT_BAUD_RATE config SERIAL_BFIN_SPORT3_UART
int bool "Enable UART over SPORT3"
depends on SERIAL_BFIN_SPORT depends on SERIAL_BFIN_SPORT && (BF54x || BF538 || BF539)
default 115200 if (SERIAL_SPORT_BAUD_RATE_115200) help
default 57600 if (SERIAL_SPORT_BAUD_RATE_57600) Enable UART over SPORT3
default 38400 if (SERIAL_SPORT_BAUD_RATE_38400)
default 19200 if (SERIAL_SPORT_BAUD_RATE_19200)
default 9600 if (SERIAL_SPORT_BAUD_RATE_9600)
config SERIAL_TIMBERDALE config SERIAL_TIMBERDALE
tristate "Support for timberdale UART" tristate "Support for timberdale UART"
......
This diff is collapsed.
/* /*
* File: linux/drivers/serial/bfin_sport_uart.h * Blackfin On-Chip Sport Emulated UART Driver
* *
* Based on: include/asm-blackfin/mach-533/bfin_serial_5xx.h * Copyright 2006-2008 Analog Devices Inc.
* Author: Roy Huang <roy.huang>analog.com>
* *
* Created: Nov 22, 2006 * Enter bugs at http://blackfin.uclinux.org/
* Copyright: (C) Analog Device Inc.
* Description: this driver enable SPORTs on Blackfin emulate UART.
* *
* This program is free software; you can redistribute it and/or modify * Licensed under the GPL-2 or later.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see the file COPYING, or write
* to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
/*
* This driver and the hardware supported are in term of EE-191 of ADI.
* http://www.analog.com/UploadedFiles/Application_Notes/399447663EE191.pdf
* This application note describe how to implement a UART on a Sharc DSP,
* but this driver is implemented on Blackfin Processor.
* Transmit Frame Sync is not used by this driver to transfer data out.
*/
#ifndef _BFIN_SPORT_UART_H
#define _BFIN_SPORT_UART_H
#define OFFSET_TCR1 0x00 /* Transmit Configuration 1 Register */ #define OFFSET_TCR1 0x00 /* Transmit Configuration 1 Register */
#define OFFSET_TCR2 0x04 /* Transmit Configuration 2 Register */ #define OFFSET_TCR2 0x04 /* Transmit Configuration 2 Register */
...@@ -61,3 +55,7 @@ ...@@ -61,3 +55,7 @@
#define SPORT_PUT_RCLKDIV(sport, v) bfin_write16(((sport)->port.membase + OFFSET_RCLKDIV), v) #define SPORT_PUT_RCLKDIV(sport, v) bfin_write16(((sport)->port.membase + OFFSET_RCLKDIV), v)
#define SPORT_PUT_RFSDIV(sport, v) bfin_write16(((sport)->port.membase + OFFSET_RFSDIV), v) #define SPORT_PUT_RFSDIV(sport, v) bfin_write16(((sport)->port.membase + OFFSET_RFSDIV), v)
#define SPORT_PUT_STAT(sport, v) bfin_write16(((sport)->port.membase + OFFSET_STAT), v) #define SPORT_PUT_STAT(sport, v) bfin_write16(((sport)->port.membase + OFFSET_STAT), v)
#define SPORT_TX_FIFO_SIZE 8
#endif /* _BFIN_SPORT_UART_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment