162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * BRIEF MODULE DESCRIPTION 362306a36Sopenharmony_ci * Serial port initialisation. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2004 IDT Inc. (rischelp@idt.com) 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or modify it 862306a36Sopenharmony_ci * under the terms of the GNU General Public License as published by the 962306a36Sopenharmony_ci * Free Software Foundation; either version 2 of the License, or (at your 1062306a36Sopenharmony_ci * option) any later version. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 1362306a36Sopenharmony_ci * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1462306a36Sopenharmony_ci * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 1562306a36Sopenharmony_ci * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1662306a36Sopenharmony_ci * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1762306a36Sopenharmony_ci * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 1862306a36Sopenharmony_ci * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 1962306a36Sopenharmony_ci * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2062306a36Sopenharmony_ci * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2162306a36Sopenharmony_ci * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * You should have received a copy of the GNU General Public License along 2462306a36Sopenharmony_ci * with this program; if not, write to the Free Software Foundation, Inc., 2562306a36Sopenharmony_ci * 675 Mass Ave, Cambridge, MA 02139, USA. 2662306a36Sopenharmony_ci */ 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#include <linux/init.h> 2962306a36Sopenharmony_ci#include <linux/tty.h> 3062306a36Sopenharmony_ci#include <linux/serial_core.h> 3162306a36Sopenharmony_ci#include <linux/serial_8250.h> 3262306a36Sopenharmony_ci#include <linux/irq.h> 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#include <asm/serial.h> 3562306a36Sopenharmony_ci#include <asm/mach-rc32434/rb.h> 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciextern unsigned int idt_cpu_freq; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistatic struct uart_port rb532_uart = { 4062306a36Sopenharmony_ci .flags = UPF_BOOT_AUTOCONF, 4162306a36Sopenharmony_ci .line = 0, 4262306a36Sopenharmony_ci .irq = UART0_IRQ, 4362306a36Sopenharmony_ci .iotype = UPIO_MEM, 4462306a36Sopenharmony_ci .membase = (char *)KSEG1ADDR(REGBASE + UART0BASE), 4562306a36Sopenharmony_ci .regshift = 2 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciint __init setup_serial_port(void) 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci rb532_uart.uartclk = idt_cpu_freq; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci return early_serial_setup(&rb532_uart); 5362306a36Sopenharmony_ci} 5462306a36Sopenharmony_ciarch_initcall(setup_serial_port); 55