Changeset 34548


Ignore:
Timestamp:
2012-12-06T23:39:43+01:00 (5 years ago)
Author:
florian
Message:

[adm8668] get rid of the specific UART driver and use AMBA PL010

Signed-off-by: Florian Fainelli <florian@…>

Location:
trunk/target/linux
Files:
2 added
2 deleted
6 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/adm8668/config-3.3

    r34547 r34548  
    44CONFIG_ARCH_HIBERNATION_POSSIBLE=y 
    55CONFIG_ARCH_SUSPEND_POSSIBLE=y 
     6CONFIG_ARM_AMBA=y 
     7# CONFIG_ARM_SP805_WATCHDOG is not set 
    68CONFIG_CEVT_R4K=y 
    79CONFIG_CEVT_R4K_LIB=y 
     
    7072# CONFIG_PREEMPT_RCU is not set 
    7173# CONFIG_SCSI_DMA is not set 
    72 CONFIG_SERIAL_ADM8668=y 
    73 CONFIG_SERIAL_ADM8668_CONSOLE=y 
     74# CONFIG_SERIAL_8250 is not set 
     75CONFIG_SERIAL_AMBA_PL010=y 
     76CONFIG_SERIAL_AMBA_PL010_CONSOLE=y 
     77CONFIG_SERIAL_AMBA_PL010_NUMPORTS=2 
     78CONFIG_SERIAL_AMBA_PL010_PORTNAME="ttyS" 
     79# CONFIG_SERIAL_AMBA_PL011 is not set 
    7480CONFIG_SWAP_IO_SPACE=y 
    7581CONFIG_SYS_HAS_CPU_MIPS32_R1=y 
  • trunk/target/linux/adm8668/files/arch/mips/adm8668/Makefile

    r34547 r34548  
    33# 
    44 
    5 obj-y           := irq.o pci.o prom.o platform.o serial.o proc.o \ 
    6                    setup.o time.o early_printk.o \ 
     5obj-y           := irq.o pci.o prom.o platform.o proc.o \ 
     6                   setup.o time.o early_printk.o clock.o \ 
    77                   net_core.o net_intr.o 
  • trunk/target/linux/adm8668/files/arch/mips/adm8668/clock.c

    r34547 r34548  
    11/* 
    2  *  ADM5120 minimal CLK API implementation 
     2 * ADM8668 minimal clock support 
    33 * 
    4  *  Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org> 
     4 * Copyright (C) 2012, Florian Fainelli <florian@openwrt.org> 
    55 * 
    6  *  This file was based on the CLK API implementation in: 
    7  *      arch/mips/tx4938/toshiba_rbtx4938/setup.c 
    8  *      Copyright (C) 2000-2001 Toshiba Corporation 
    9  *      2003-2005 (c) MontaVista Software, Inc. 
    10  * 
    11  *  This program is free software; you can redistribute it and/or modify it 
    12  *  under the terms of the GNU General Public License version 2 as published 
    13  *  by the Free Software Foundation. 
    14  * 
     6 * Licensed under the terms of the GPLv2 
    157 */ 
    168 
    179#include <linux/kernel.h> 
    18 #include <linux/string.h> 
    1910#include <linux/module.h> 
     11#include <linux/device.h> 
    2012#include <linux/err.h> 
    2113#include <linux/clk.h> 
    22 #include <linux/device.h> 
    2314 
    24 #include <asm/mach-adm5120/adm5120_defs.h> 
     15#include <adm8668.h> 
    2516 
    2617struct clk { 
     
    2920 
    3021static struct clk uart_clk = { 
    31         .rate = ADM5120_UART_CLOCK 
     22        .rate   = ADM8668_UARTCLK_FREQ, 
    3223}; 
    3324 
     
    3627        const char *name = dev_name(dev); 
    3728 
    38         if (!strcmp(name, "apb:uart0") || !strcmp(name, "apb:uart1")) 
     29        if (!strcmp(name, "apb:uart0")) 
    3930                return &uart_clk; 
    4031 
  • trunk/target/linux/adm8668/files/arch/mips/adm8668/platform.c

    r34545 r34548  
    11/* 
    22 * Copyright (C) 2010 Scott Nicholas <neutronscott@scottn.us> 
     3 * Copyright (C) 2012 Florian Fainelli <florian@openwrt.org> 
    34 * 
    45 * This file is subject to the terms and conditions of the GNU General Public 
     
    1415#include <linux/slab.h> 
    1516#include <linux/ioport.h> 
     17#include <linux/amba/bus.h> 
     18#include <linux/amba/serial.h> 
     19 
    1620#include <asm/reboot.h> 
    1721#include <asm/time.h> 
     
    2125#include <adm8668.h> 
    2226 
    23 static struct resource uart_resources[] = { 
    24         { 
     27static void adm8668_uart_set_mctrl(struct amba_device *dev, 
     28                                        void __iomem *base, 
     29                                        unsigned int mcrtl) 
     30{ 
     31} 
     32 
     33static struct amba_pl010_data adm8668_uart0_data = { 
     34        .set_mctrl = adm8668_uart_set_mctrl, 
     35}; 
     36 
     37static struct amba_device adm8668_uart0_device = { 
     38        .dev = { 
     39                .init_name      = "apb:uart0", 
     40                .platform_data  = &adm8668_uart0_data, 
     41        }, 
     42        .res = { 
    2543                .start          = ADM8668_UART0_BASE, 
    2644                .end            = ADM8668_UART0_BASE + 0xF, 
    2745                .flags          = IORESOURCE_MEM, 
    2846        }, 
    29         { 
    30                 .start          = INT_LVL_UART0, 
    31                 .flags          = IORESOURCE_IRQ, 
     47        .irq = { 
     48                INT_LVL_UART0, 
     49                -1 
    3250        }, 
    33 }; 
    34  
    35 static struct platform_device adm8668_uart_device = { 
    36         .name           = "adm8668_uart", 
    37         .id             = 0, 
    38         .resource       = uart_resources, 
    39         .num_resources  = ARRAY_SIZE(uart_resources), 
     51        .periphid = 0x0041010, 
    4052}; 
    4153 
     
    7991 
    8092static struct platform_device *adm8668_devs[] = { 
    81         &adm8668_uart_device, 
    8293        &adm8668_eth0_device, 
    8394        &adm8668_eth1_device, 
     
    8697int __devinit adm8668_devs_register(void) 
    8798{ 
     99        int ret; 
     100 
     101        ret = amba_device_register(&adm8668_uart0_device, &iomem_resource); 
     102        if (ret) 
     103                panic("failed to register AMBA UART"); 
     104 
    88105        return platform_add_devices(adm8668_devs, ARRAY_SIZE(adm8668_devs)); 
    89106} 
  • trunk/target/linux/adm8668/patches-3.3/001-adm8668_arch.patch

    r34547 r34548  
    1111--- a/arch/mips/Kconfig 
    1212+++ b/arch/mips/Kconfig 
    13 @@ -105,6 +105,27 @@ config BCM47XX 
     13@@ -105,6 +105,25 @@ config BCM47XX 
    1414        help 
    1515         Support for BCM47XX based boards 
     
    2929+       select DMA_NONCOHERENT 
    3030+       select SWAP_IO_SPACE 
    31 +       select SERIAL_ADM8668 
    32 +       select SERIAL_ADM8668_CONSOLE 
    3331+       select SYS_HAS_EARLY_PRINTK 
    3432+       help 
     
    3937        bool "Broadcom BCM63XX based boards" 
    4038        select CEVT_R4K 
     39@@ -813,6 +833,7 @@ config NLM_XLP_BOARD 
     40  
     41 endchoice 
     42  
     43+source "arch/mips/adm8668/Kconfig" 
     44 source "arch/mips/alchemy/Kconfig" 
     45 source "arch/mips/ath79/Kconfig" 
     46 source "arch/mips/bcm47xx/Kconfig" 
  • trunk/target/linux/adm8668/patches-3.3/200-amba_pl010_hacks.patch

    r34547 r34548  
    11--- a/drivers/tty/serial/amba-pl010.c 
    22+++ b/drivers/tty/serial/amba-pl010.c 
    3 @@ -49,11 +49,9 @@ 
     3@@ -49,11 +49,10 @@ 
    44  
    55 #include <asm/io.h> 
     
    1111-#define SERIAL_AMBA_NR         UART_NR 
    1212+#define SERIAL_AMBA_NR         CONFIG_SERIAL_AMBA_PL010_NUMPORTS 
     13+#define SERIAL_AMBA_NAME       CONFIG_SERIAL_AMBA_PL010_PORTNAME 
    1314  
    1415 #define AMBA_ISR_PASS_LIMIT    256 
    1516  
    16 @@ -79,9 +77,9 @@ static void pl010_stop_tx(struct uart_po 
     17@@ -79,9 +78,9 @@ static void pl010_stop_tx(struct uart_po 
    1718        struct uart_amba_port *uap = (struct uart_amba_port *)port; 
    1819        unsigned int cr; 
     
    2627  
    2728 static void pl010_start_tx(struct uart_port *port) 
    28 @@ -89,9 +87,9 @@ static void pl010_start_tx(struct uart_p 
     29@@ -89,9 +88,9 @@ static void pl010_start_tx(struct uart_p 
    2930        struct uart_amba_port *uap = (struct uart_amba_port *)port; 
    3031        unsigned int cr; 
     
    3839  
    3940 static void pl010_stop_rx(struct uart_port *port) 
    40 @@ -99,9 +97,9 @@ static void pl010_stop_rx(struct uart_po 
     41@@ -99,9 +98,9 @@ static void pl010_stop_rx(struct uart_po 
    4142        struct uart_amba_port *uap = (struct uart_amba_port *)port; 
    4243        unsigned int cr; 
     
    5051  
    5152 static void pl010_enable_ms(struct uart_port *port) 
    52 @@ -109,9 +107,9 @@ static void pl010_enable_ms(struct uart_ 
     53@@ -109,9 +108,9 @@ static void pl010_enable_ms(struct uart_ 
    5354        struct uart_amba_port *uap = (struct uart_amba_port *)port; 
    5455        unsigned int cr; 
     
    6263  
    6364 static void pl010_rx_chars(struct uart_amba_port *uap) 
    64 @@ -119,9 +117,9 @@ static void pl010_rx_chars(struct uart_a 
     65@@ -119,9 +118,9 @@ static void pl010_rx_chars(struct uart_a 
    6566        struct tty_struct *tty = uap->port.state->port.tty; 
    6667        unsigned int status, ch, flag, rsr, max_count = 256; 
     
    7475  
    7576                uap->port.icount.rx++; 
    76 @@ -130,9 +128,9 @@ static void pl010_rx_chars(struct uart_a 
     77@@ -130,9 +129,9 @@ static void pl010_rx_chars(struct uart_a 
    7778                 * Note that the error handling code is 
    7879                 * out of the main execution path 
     
    8687                        if (rsr & UART01x_RSR_BE) { 
    8788                                rsr &= ~(UART01x_RSR_FE | UART01x_RSR_PE); 
    88 @@ -162,7 +160,7 @@ static void pl010_rx_chars(struct uart_a 
     89@@ -162,7 +161,7 @@ static void pl010_rx_chars(struct uart_a 
    8990                uart_insert_char(&uap->port, rsr, UART01x_RSR_OE, ch, flag); 
    9091  
     
    9596        spin_unlock(&uap->port.lock); 
    9697        tty_flip_buffer_push(tty); 
    97 @@ -175,7 +173,7 @@ static void pl010_tx_chars(struct uart_a 
     98@@ -175,7 +174,7 @@ static void pl010_tx_chars(struct uart_a 
    9899        int count; 
    99100  
     
    104105                uap->port.x_char = 0; 
    105106                return; 
    106 @@ -187,7 +185,7 @@ static void pl010_tx_chars(struct uart_a 
     107@@ -187,7 +186,7 @@ static void pl010_tx_chars(struct uart_a 
    107108  
    108109        count = uap->port.fifosize >> 1; 
     
    113114                uap->port.icount.tx++; 
    114115                if (uart_circ_empty(xmit)) 
    115 @@ -205,9 +203,9 @@ static void pl010_modem_status(struct ua 
     116@@ -205,9 +204,9 @@ static void pl010_modem_status(struct ua 
    116117 { 
    117118        unsigned int status, delta; 
     
    125126        delta = status ^ uap->old_status; 
    126127        uap->old_status = status; 
    127 @@ -235,7 +233,7 @@ static irqreturn_t pl010_int(int irq, vo 
     128@@ -235,7 +234,7 @@ static irqreturn_t pl010_int(int irq, vo 
    128129  
    129130        spin_lock(&uap->port.lock); 
     
    134135                do { 
    135136                        if (status & (UART010_IIR_RTIS | UART010_IIR_RIS)) 
    136 @@ -248,7 +246,7 @@ static irqreturn_t pl010_int(int irq, vo 
     137@@ -248,7 +247,7 @@ static irqreturn_t pl010_int(int irq, vo 
    137138                        if (pass_counter-- == 0) 
    138139                                break; 
     
    143144                                   UART010_IIR_TIS)); 
    144145                handled = 1; 
    145 @@ -262,7 +260,7 @@ static irqreturn_t pl010_int(int irq, vo 
     146@@ -262,7 +261,7 @@ static irqreturn_t pl010_int(int irq, vo 
    146147 static unsigned int pl010_tx_empty(struct uart_port *port) 
    147148 { 
     
    152153 } 
    153154  
    154 @@ -272,7 +270,7 @@ static unsigned int pl010_get_mctrl(stru 
     155@@ -272,7 +271,7 @@ static unsigned int pl010_get_mctrl(stru 
    155156        unsigned int result = 0; 
    156157        unsigned int status; 
     
    161162                result |= TIOCM_CAR; 
    162163        if (status & UART01x_FR_DSR) 
    163 @@ -298,12 +296,12 @@ static void pl010_break_ctl(struct uart_ 
     164@@ -298,12 +297,12 @@ static void pl010_break_ctl(struct uart_ 
    164165        unsigned int lcr_h; 
    165166  
     
    176177 } 
    177178  
    178 @@ -335,12 +333,12 @@ static int pl010_startup(struct uart_por 
     179@@ -335,12 +334,12 @@ static int pl010_startup(struct uart_por 
    179180        /* 
    180181         * initialise the old status of the modem signals 
     
    191192  
    192193        return 0; 
    193 @@ -365,10 +363,10 @@ static void pl010_shutdown(struct uart_p 
     194@@ -365,10 +364,10 @@ static void pl010_shutdown(struct uart_p 
    194195        /* 
    195196         * disable all interrupts, disable the port 
     
    204205               uap->port.membase + UART010_LCRH); 
    205206  
    206 @@ -391,7 +389,7 @@ pl010_set_termios(struct uart_port *port 
     207@@ -391,7 +390,7 @@ pl010_set_termios(struct uart_port *port 
    207208        /* 
    208209         * Ask the core to calculate the divisor for us. 
     
    213214  
    214215        switch (termios->c_cflag & CSIZE) { 
    215 @@ -454,25 +452,25 @@ pl010_set_termios(struct uart_port *port 
     216@@ -454,25 +453,25 @@ pl010_set_termios(struct uart_port *port 
    216217                uap->port.ignore_status_mask |= UART_DUMMY_RSR_RX; 
    217218  
     
    245246        spin_unlock_irqrestore(&uap->port.lock, flags); 
    246247 } 
    247 @@ -554,7 +552,7 @@ static struct uart_ops amba_pl010_pops = 
     248@@ -554,7 +553,7 @@ static struct uart_ops amba_pl010_pops = 
    248249        .verify_port    = pl010_verify_port, 
    249250 }; 
     
    254255 #ifdef CONFIG_SERIAL_AMBA_PL010_CONSOLE 
    255256  
    256 @@ -564,10 +562,10 @@ static void pl010_console_putchar(struct 
     257@@ -564,10 +563,10 @@ static void pl010_console_putchar(struct 
    257258        unsigned int status; 
    258259  
     
    267268  
    268269 static void 
    269 @@ -581,8 +579,8 @@ pl010_console_write(struct console *co, 
     270@@ -581,8 +580,8 @@ pl010_console_write(struct console *co, 
    270271        /* 
    271272         *      First save the CR then disable the interrupts 
     
    278279        uart_console_write(&uap->port, s, count, pl010_console_putchar); 
    279280  
    280 @@ -591,10 +589,10 @@ pl010_console_write(struct console *co, 
     281@@ -591,10 +590,10 @@ pl010_console_write(struct console *co, 
    281282         *      and restore the TCR 
    282283         */ 
     
    291292        clk_disable(uap->clk); 
    292293 } 
    293 @@ -603,9 +601,9 @@ static void __init 
     294@@ -603,9 +602,9 @@ static void __init 
    294295 pl010_console_get_options(struct uart_amba_port *uap, int *baud, 
    295296                             int *parity, int *bits) 
     
    303304                *parity = 'n'; 
    304305                if (lcr_h & UART01x_LCRH_PEN) { 
    305 @@ -620,8 +618,8 @@ pl010_console_get_options(struct uart_am 
     306@@ -620,8 +619,8 @@ pl010_console_get_options(struct uart_am 
    306307                else 
    307308                        *bits = 8; 
     
    314315        } 
    315316 } 
    316 @@ -640,7 +638,7 @@ static int __init pl010_console_setup(st 
     317@@ -640,7 +639,7 @@ static int __init pl010_console_setup(st 
    317318         * if so, search for the first available port that does have 
    318319         * console support. 
     
    323324        uap = amba_ports[co->index]; 
    324325        if (!uap) 
    325 @@ -682,7 +680,7 @@ static struct uart_driver amba_reg = { 
    326         .dev_name               = "ttyAM", 
     326@@ -662,7 +661,7 @@ static int __init pl010_console_setup(st 
     327  
     328 static struct uart_driver amba_reg; 
     329 static struct console amba_console = { 
     330-       .name           = "ttyAM", 
     331+       .name           = SERIAL_AMBA_NAME, 
     332        .write          = pl010_console_write, 
     333        .device         = uart_console_device, 
     334        .setup          = pl010_console_setup, 
     335@@ -678,11 +677,11 @@ static struct console amba_console = { 
     336  
     337 static struct uart_driver amba_reg = { 
     338        .owner                  = THIS_MODULE, 
     339-       .driver_name            = "ttyAM", 
     340-       .dev_name               = "ttyAM", 
     341+       .driver_name            = SERIAL_AMBA_NAME, 
     342+       .dev_name               = SERIAL_AMBA_NAME, 
    327343        .major                  = SERIAL_AMBA_MAJOR, 
    328344        .minor                  = SERIAL_AMBA_MINOR, 
     
    334350--- a/drivers/tty/serial/Kconfig 
    335351+++ b/drivers/tty/serial/Kconfig 
    336 @@ -16,10 +16,18 @@ config SERIAL_AMBA_PL010 
     352@@ -16,10 +16,25 @@ config SERIAL_AMBA_PL010 
    337353        help 
    338354          This selects the ARM(R) AMBA(R) PrimeCell PL010 UART.  If you have 
     
    351367+         to support. 
    352368+ 
     369+config SERIAL_AMBA_PL010_PORTNAME 
     370+       string "Name of the AMBA PL010 serial ports" 
     371+       depends on SERIAL_AMBA_PL010 
     372+       default "ttyAM" 
     373+       ---help--- 
     374+         ::: To be written ::: 
     375+ 
    353376 config SERIAL_AMBA_PL010_CONSOLE 
    354377        bool "Support for console on AMBA serial port" 
  • trunk/target/linux/generic/patches-3.3/065-8139cp-fixes.patch

    r34415 r34548  
    6767    Signed-off-by: David S. Miller <davem@davemloft.net> 
    6868 
    69 diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c 
    70 index b01f83a..6cb96b4 100644 
    7169--- a/drivers/net/ethernet/realtek/8139cp.c 
    7270+++ b/drivers/net/ethernet/realtek/8139cp.c 
    73 @@ -648,6 +648,7 @@ static void cp_tx (struct cp_private *cp) 
     71@@ -645,6 +645,7 @@ static void cp_tx (struct cp_private *cp 
    7472 { 
    7573        unsigned tx_head = cp->tx_head; 
     
    7977        while (tx_tail != tx_head) { 
    8078                struct cp_desc *txd = cp->tx_ring + tx_tail; 
    81 @@ -666,6 +667,9 @@ static void cp_tx (struct cp_private *cp) 
     79@@ -663,6 +664,9 @@ static void cp_tx (struct cp_private *cp 
    8280                                 le32_to_cpu(txd->opts1) & 0xffff, 
    8381                                 PCI_DMA_TODEVICE); 
     
    8987                        if (status & (TxError | TxFIFOUnder)) { 
    9088                                netif_dbg(cp, tx_err, cp->dev, 
    91 @@ -697,6 +701,7 @@ static void cp_tx (struct cp_private *cp) 
     89@@ -694,6 +698,7 @@ static void cp_tx (struct cp_private *cp 
    9290  
    9391        cp->tx_tail = tx_tail; 
     
    9795                netif_wake_queue(cp->dev); 
    9896 } 
    99 @@ -843,6 +848,8 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb, 
     97@@ -840,6 +845,8 @@ static netdev_tx_t cp_start_xmit (struct 
    10098                wmb(); 
    10199        } 
     
    106104                  entry, skb->len); 
    107105        if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1)) 
    108 @@ -937,6 +944,8 @@ static void cp_stop_hw (struct cp_private *cp) 
     106@@ -934,6 +941,8 @@ static void cp_stop_hw (struct cp_privat 
    109107  
    110108        cp->rx_tail = 0; 
     
    115113  
    116114 static void cp_reset_hw (struct cp_private *cp) 
    117 @@ -957,8 +966,38 @@ static void cp_reset_hw (struct cp_private *cp) 
     115@@ -954,8 +963,38 @@ static void cp_reset_hw (struct cp_priva 
    118116  
    119117 static inline void cp_start_hw (struct cp_private *cp) 
     
    154152  
    155153 static void cp_enable_irq(struct cp_private *cp) 
    156 @@ -969,7 +1008,6 @@ static void cp_enable_irq(struct cp_private *cp) 
     154@@ -966,7 +1005,6 @@ static void cp_enable_irq(struct cp_priv 
    157155 static void cp_init_hw (struct cp_private *cp) 
    158156 { 
     
    162160        cp_reset_hw(cp); 
    163161  
    164 @@ -992,17 +1030,6 @@ static void cp_init_hw (struct cp_private *cp) 
     162@@ -989,17 +1027,6 @@ static void cp_init_hw (struct cp_privat 
    165163  
    166164        cpw8(Config5, cpr8(Config5) & PMEStatus); 
     
    180178  
    181179        cpw8_f(Cfg9346, Cfg9346_Lock); 
    182 @@ -1192,6 +1219,7 @@ static void cp_tx_timeout(struct net_device *dev) 
     180@@ -1188,6 +1215,7 @@ static void cp_tx_timeout(struct net_dev 
    183181        cp_clean_rings(cp); 
    184182        rc = cp_init_rings(cp); 
  • trunk/target/linux/generic/patches-3.3/080-prot-release-cb.patch

    r34410 r34548  
    44--- a/include/net/sock.h 
    55+++ b/include/net/sock.h 
    6 @@ -858,6 +858,8 @@ struct proto { 
    7         int                     (*backlog_rcv) (struct sock *sk, 
     6@@ -810,6 +810,8 @@ struct proto { 
     7        int                     (*backlog_rcv) (struct sock *sk,  
    88                                                struct sk_buff *skb); 
    99  
     
    1515--- a/net/core/sock.c 
    1616+++ b/net/core/sock.c 
    17 @@ -2159,6 +2159,10 @@ void release_sock(struct sock *sk) 
     17@@ -2138,6 +2138,10 @@ void release_sock(struct sock *sk) 
    1818        spin_lock_bh(&sk->sk_lock.slock); 
    1919        if (sk->sk_backlog.tail) 
Note: See TracChangeset for help on using the changeset viewer.