Changeset 7916


Ignore:
Timestamp:
2007-07-11T15:00:27+02:00 (9 years ago)
Author:
juhosg
Message:

[adm5120] refactor kernel code (part 1), mark it as broken now

Location:
trunk/target/linux
Files:
29 added
1 deleted
27 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/adm5120-2.6/Makefile

    r7915 r7916  
    1010BOARD:=adm5120 
    1111BOARDNAME:=ADM5120 (Little Endian) 
    12 FEATURES:=squashfs jffs2 pci usb 
     12FEATURES:=squashfs jffs2 pci usb broken 
    1313 
    1414LINUX_VERSION:=2.6.22.1 
  • trunk/target/linux/adm5120-2.6/config/default

    r7758 r7916  
    22# CONFIG_64BIT is not set 
    33# CONFIG_64BIT_PHYS_ADDR is not set 
    4 CONFIG_ADM5120_HARDWARE_SWAB=y 
     4# CONFIG_ADM5120_HARDWARE_SWAB is not set 
    55CONFIG_ADM5120_NR_UARTS=2 
    66# CONFIG_ARCH_HAS_ILOG2_U32 is not set 
     
    5353CONFIG_DMA_NEED_PCI_MAP_STATE=y 
    5454CONFIG_DMA_NONCOHERENT=y 
     55CONFIG_EARLY_PRINTK=y 
    5556CONFIG_ELF_CORE=y 
    5657# CONFIG_EXT3_FS_POSIX_ACL is not set 
     
    155156# CONFIG_MTD_DOC2001PLUS is not set 
    156157CONFIG_MTD_GEN_PROBE=y 
    157 # CONFIG_MTD_JEDECPROBE is not set 
     158CONFIG_MTD_JEDECPROBE=y 
    158159CONFIG_MTD_MAP_BANK_WIDTH_1=y 
    159160# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 
     
    185186# CONFIG_MTD_ROM is not set 
    186187# CONFIG_MTD_SLRAM is not set 
     188# CONFIG_MTD_SPLIT_ROOTFS is not set 
    187189# CONFIG_NETDEV_1000 is not set 
    188190CONFIG_NET_KEY=y 
     
    231233CONFIG_SYSVIPC_SYSCTL=y 
    232234CONFIG_SYS_HAS_CPU_MIPS32_R1=y 
     235CONFIG_SYS_HAS_EARLY_PRINTK=y 
    233236CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 
    234237CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 
     
    244247# CONFIG_USBPCWATCHDOG is not set 
    245248# CONFIG_USB_ACM is not set 
    246 CONFIG_USB_ADM5120_HCD=y 
     249CONFIG_USB_ADM5120_HCD=m 
    247250# CONFIG_USB_ALI_M5632 is not set 
    248251# CONFIG_USB_AN2720 is not set 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/Makefile

    r7673 r7916  
    66obj-y   += gpio.o 
    77obj-y   += time.o 
     8obj-y   += reset.o 
     9obj-y   += board.o 
     10obj-y   += platform.o 
     11obj-y   += trxsplit.o 
    812 
    913EXTRA_AFLAGS := $(CFLAGS) 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/adm5120_info.c

    r7819 r7916  
    11/* 
    2  * $Id$ 
     2 *  $Id$ 
    33 * 
    4  * Copyright (C) 2007 OpenWrt.org 
    5  * Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
     4 *  Copyright (C) 2007 OpenWrt.org 
     5 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
    66 * 
    7  * This program is free software; you can redistribute  it and/or modify it 
    8  * under  the terms of  the GNU General  Public License as published by the 
    9  * Free Software Foundation;  either version 2 of the  License, or (at your 
    10  * option) any later version. 
     7 *  This program is free software; you can redistribute it and/or 
     8 *  modify it under the terms of the GNU General Public License 
     9 *  as published by the Free Software Foundation; either version 2 
     10 *  of the License, or (at your option) any later version. 
     11 * 
     12 *  This program is distributed in the hope that it will be useful, 
     13 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     14 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     15 *  GNU General Public License for more details. 
     16 * 
     17 *  You should have received a copy of the GNU General Public License 
     18 *  along with this program; if not, write to the 
     19 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     20 *  Boston, MA  02110-1301, USA. 
     21 * 
    1122 */ 
    1223 
    1324#include <linux/types.h> 
    14 #include <linux/autoconf.h> 
    1525#include <linux/kernel.h> 
    1626#include <linux/init.h> 
    17 #include <linux/string.h> 
    18 #include <linux/module.h> 
    1927 
    2028#include <asm/bootinfo.h> 
    2129#include <asm/addrspace.h> 
    22 #include <asm/byteorder.h> 
    2330 
     31#include <asm/mach-adm5120/adm5120_info.h> 
    2432#include <asm/mach-adm5120/adm5120_defs.h> 
    2533#include <asm/mach-adm5120/adm5120_switch.h> 
    26 #include <asm/mach-adm5120/adm5120_mpmc.h> 
    27 #include <asm/mach-adm5120/adm5120_info.h> 
    28 #include <asm/mach-adm5120/myloader.h> 
    29 #include <asm/mach-adm5120/routerboot.h> 
    30 #include <asm/mach-adm5120/zynos.h> 
    31  
    32 extern char *prom_getenv(char *envname); 
    33 /* 
    34  * Globals 
    35  */ 
    36 struct adm5120_board adm5120_board; 
    37 EXPORT_SYMBOL_GPL(adm5120_board); 
    38  
    39 unsigned int adm5120_boot_loader; 
    4034 
    4135unsigned int adm5120_product_code; 
     
    4438unsigned int adm5120_nand_boot; 
    4539unsigned long adm5120_speed; 
    46 unsigned long adm5120_memsize; 
    47  
    48 /* 
    49  * Locals 
    50  */ 
    51 static char *boot_loader_names[BOOT_LOADER_LAST+1] = { 
    52         [BOOT_LOADER_UNKNOWN]   = "Unknown", 
    53         [BOOT_LOADER_CFE]       = "CFE", 
    54         [BOOT_LOADER_UBOOT]     = "U-Boot", 
    55         [BOOT_LOADER_MYLOADER]  = "MyLoader", 
    56         [BOOT_LOADER_ROUTERBOOT]= "RouterBOOT", 
    57         [BOOT_LOADER_BOOTBASE]  = "Bootbase" 
    58 }; 
    59  
    60 static struct adm5120_board __initdata adm5120_boards[] = { 
    61         /* FIXME: some boards have invalid fields */ 
    62         { 
    63                 .name           = "Cellvision CAS-630/630W", 
    64                 .mach_type      = MACH_ADM5120_CAS630, 
    65                 .has_usb        = 0, 
    66                 .iface_num      = 1, 
    67                 .flash0_size    = 4*1024*1024, 
    68         }, 
    69         { 
    70                 .name           = "Cellvision CAS-670/670W", 
    71                 .mach_type      = MACH_ADM5120_CAS670, 
    72                 .has_usb        = 0, 
    73                 .iface_num      = 1, 
    74                 .flash0_size    = 4*1024*1024, 
    75         }, 
    76         { 
    77                 .name           = "Cellvision CAS-700/700W", 
    78                 .mach_type      = MACH_ADM5120_CAS700, 
    79                 .has_usb        = 0, 
    80                 .iface_num      = 1, 
    81                 .flash0_size    = 4*1024*1024, 
    82         }, 
    83         { 
    84                 .name           = "Cellvision CAS-771/771W", 
    85                 .mach_type      = MACH_ADM5120_CAS771, 
    86                 .has_usb        = 0, 
    87                 .iface_num      = 5, 
    88                 .mem_size       = (32 << 20), 
    89                 .flash0_size    = 4*1024*1024, 
    90         }, 
    91         { 
    92                 .name           = "Cellvision CAS-790", 
    93                 .mach_type      = MACH_ADM5120_CAS790, 
    94                 .has_usb        = 0, 
    95                 .iface_num      = 1, 
    96                 .flash0_size    = 4*1024*1024, 
    97         }, 
    98         { 
    99                 .name           = "Cellvision CAS-861/861W", 
    100                 .mach_type      = MACH_ADM5120_CAS861, 
    101                 .has_usb        = 0, 
    102                 .iface_num      = 1, 
    103                 .flash0_size    = 4*1024*1024, 
    104         }, 
    105         { 
    106                 .name           = "Cellvision NFS-101U/101WU", 
    107                 .mach_type      = MACH_ADM5120_NFS101U, 
    108                 .has_usb        = 0, 
    109                 .iface_num      = 1, 
    110                 .flash0_size    = 4*1024*1024, 
    111         }, 
    112         { 
    113                 .name           = "Cellvision NFS-202U/202WU", 
    114                 .mach_type      = MACH_ADM5120_NFS202U, 
    115                 .has_usb        = 0, 
    116                 .iface_num      = 1, 
    117                 .flash0_size    = 4*1024*1024, 
    118         }, 
    119         { 
    120                 .name           = "Compex NetPassage 27G", 
    121                 .mach_type      = MACH_ADM5120_NP27G, 
    122                 .has_usb        = 1, 
    123                 .iface_num      = 5, 
    124                 .flash0_size    = 4*1024*1024, 
    125         }, 
    126         { 
    127                 .name           = "Compex NetPassage 28G", 
    128                 .mach_type      = MACH_ADM5120_NP28G, 
    129                 .has_usb        = 0, 
    130                 .iface_num      = 4, 
    131                 .flash0_size    = 4*1024*1024, 
    132         }, 
    133         { 
    134                 .name           = "Compex NP28G (HotSpot)", 
    135                 .mach_type      = MACH_ADM5120_NP28GHS, 
    136                 .has_usb        = 0, 
    137                 .iface_num      = 4, 
    138                 .flash0_size    = 4*1024*1024, 
    139         }, 
    140         { 
    141                 .name           = "Compex WP54AG", 
    142                 .mach_type      = MACH_ADM5120_WP54AG, 
    143                 .has_usb        = 0, 
    144                 .iface_num      = 2, 
    145                 .mem_size       = (16 << 20), 
    146                 .flash0_size    = 4*1024*1024, 
    147         }, 
    148         { 
    149                 .name           = "Compex WP54G", 
    150                 .mach_type      = MACH_ADM5120_WP54G, 
    151                 .has_usb        = 0, 
    152                 .iface_num      = 2, 
    153                 .flash0_size    = 4*1024*1024, 
    154         }, 
    155         { 
    156                 .name           = "Compex WP54G-WRT", 
    157                 .mach_type      = MACH_ADM5120_WP54G_WRT, 
    158                 .has_usb        = 0, 
    159                 .iface_num      = 2, 
    160                 .flash0_size    = 4*1024*1024, 
    161         }, 
    162         { 
    163                 .name           = "Compex WP54G v1C", 
    164                 .mach_type      = MACH_ADM5120_WP54Gv1C, 
    165                 .has_usb        = 0, 
    166                 .iface_num      = 2, 
    167                 .flash0_size    = 2*1024*1024, 
    168         }, 
    169         { 
    170                 .name           = "Compex WPP54AG", 
    171                 .mach_type      = MACH_ADM5120_WPP54AG, 
    172                 .has_usb        = 0, 
    173                 .iface_num      = 2, 
    174                 .flash0_size    = 4*1024*1024, 
    175         }, 
    176         { 
    177                 .name           = "Compex WPP54G", 
    178                 .mach_type      = MACH_ADM5120_WPP54G, 
    179                 .has_usb        = 0, 
    180                 .iface_num      = 2, 
    181                 .flash0_size    = 4*1024*1024, 
    182         }, 
    183         { 
    184                 .name           = "Edimax BR-6104K", 
    185                 .mach_type      = MACH_ADM5120_BR6104K, 
    186                 .has_usb        = 0, 
    187                 .iface_num      = 5, 
    188                 .mem_size       = (16 << 20), 
    189                 .flash0_size    = 2*1024*1024, 
    190         }, 
    191         { 
    192                 .name           = "Infineon EASY 5120", 
    193                 .mach_type      = MACH_ADM5120_EASY5120, 
    194                 .has_usb        = 0, 
    195                 .iface_num      = 0, 
    196                 .flash0_size    = 2*1024*1024, 
    197         }, 
    198         { 
    199                 .name           = "Infineon EASY 5120-RT", 
    200                 .mach_type      = MACH_ADM5120_EASY5120RT, 
    201                 .has_usb        = 0, 
    202                 .iface_num      = 0, 
    203                 .flash0_size    = 2*1024*1024, 
    204         }, 
    205         { 
    206                 .name           = "Infineon EASY 5120P-ATA", 
    207                 .mach_type      = MACH_ADM5120_EASY5120PATA, 
    208                 .has_usb        = 0, 
    209                 .iface_num      = 0, 
    210                 .flash0_size    = 2*1024*1024, 
    211         }, 
    212         { 
    213                 .name           = "Infineon EASY 83000", 
    214                 .mach_type      = MACH_ADM5120_EASY83000, 
    215                 .has_usb        = 0, 
    216                 .iface_num      = 6, 
    217                 .flash0_size    = 4*1024*1024, 
    218         }, 
    219         { 
    220                 .name           = "RouterBOARD 111", 
    221                 .mach_type      = MACH_ADM5120_RB_111, 
    222                 .has_usb        = 0, 
    223                 .iface_num      = 1, 
    224                 .flash0_size    = 128*1024, 
    225         }, 
    226         { 
    227                 .name           = "RouterBOARD 112", 
    228                 .mach_type      = MACH_ADM5120_RB_112, 
    229                 .has_usb        = 0, 
    230                 .iface_num      = 1, 
    231                 .flash0_size    = 128*1024, 
    232         }, 
    233         { 
    234                 .name           = "RouterBOARD 133", 
    235                 .mach_type      = MACH_ADM5120_RB_133, 
    236                 .has_usb        = 0, 
    237                 .iface_num      = 3, 
    238                 .flash0_size    = 128*1024, 
    239         }, 
    240         { 
    241                 .name           = "RouterBOARD 133C", 
    242                 .mach_type      = MACH_ADM5120_RB_133C, 
    243                 .has_usb        = 0, 
    244                 .iface_num      = 1, 
    245                 .flash0_size    = 128*1024, 
    246         }, 
    247         { 
    248                 .name           = "RouterBOARD 150", 
    249                 .mach_type      = MACH_ADM5120_RB_150, 
    250                 .has_usb        = 0, 
    251                 .iface_num      = 5, 
    252                 .flash0_size    = 128*1024, 
    253         }, 
    254         { 
    255                 .name           = "RouterBOARD 153", 
    256                 .mach_type      = MACH_ADM5120_RB_153, 
    257                 .has_usb        = 0, 
    258                 .iface_num      = 5, 
    259                 .flash0_size    = 128*1024, 
    260         }, 
    261         { 
    262                 .name           = "ZyXEL ES-2024A", 
    263                 .mach_type      = MACH_ADM5120_ES2024A, 
    264                 .has_usb        = 0, 
    265                 .iface_num      = 0, 
    266                 .flash0_size    = 4*1024*1024, 
    267         }, 
    268         { 
    269                 .name           = "ZyXEL ES-2024PWR", 
    270                 .mach_type      = MACH_ADM5120_ES2024PWR, 
    271                 .has_usb        = 0, 
    272                 .iface_num      = 0, 
    273                 .flash0_size    = 4*1024*1024, 
    274         }, 
    275         { 
    276                 .name           = "ZyXEL ES-2108", 
    277                 .mach_type      = MACH_ADM5120_ES2108, 
    278                 .has_usb        = 0, 
    279                 .iface_num      = 0, 
    280                 .flash0_size    = 4*1024*1024, 
    281         }, 
    282         { 
    283                 .name           = "ZyXEL ES-2108-F", 
    284                 .mach_type      = MACH_ADM5120_ES2108F, 
    285                 .has_usb        = 0, 
    286                 .iface_num      = 0, 
    287                 .flash0_size    = 4*1024*1024, 
    288         }, 
    289         { 
    290                 .name           = "ZyXEL ES-2108-G", 
    291                 .mach_type      = MACH_ADM5120_ES2108G, 
    292                 .has_usb        = 0, 
    293                 .iface_num      = 0, 
    294                 .flash0_size    = 4*1024*1024, 
    295         }, 
    296         { 
    297                 .name           = "ZyXEL ES-2108-LC", 
    298                 .mach_type      = MACH_ADM5120_ES2108LC, 
    299                 .has_usb        = 0, 
    300                 .iface_num      = 0, 
    301                 .flash0_size    = 4*1024*1024, 
    302         }, 
    303         { 
    304                 .name           = "ZyXEL ES-2108-PWR", 
    305                 .mach_type      = MACH_ADM5120_ES2108PWR, 
    306                 .has_usb        = 0, 
    307                 .iface_num      = 0, 
    308                 .flash0_size    = 4*1024*1024, 
    309         }, 
    310         { 
    311                 .name           = "ZyXEL HomeSafe 100/100W", 
    312                 .mach_type      = MACH_ADM5120_HS100, 
    313                 .has_usb        = 0, 
    314                 .iface_num      = 5, 
    315                 .flash0_size    = 4*1024*1024, 
    316         }, 
    317         { 
    318                 .name           = "ZyXEL Prestige 334", 
    319                 .mach_type      = MACH_ADM5120_P334, 
    320                 .has_usb        = 0, 
    321                 .iface_num      = 5, 
    322                 .flash0_size    = 2*1024*1024, 
    323         }, 
    324         { 
    325                 .name           = "ZyXEL Prestige 334U", 
    326                 .mach_type      = MACH_ADM5120_P334U, 
    327                 .has_usb        = 0, 
    328                 .iface_num      = 5, 
    329                 .flash0_size    = 4*1024*1024, 
    330         }, 
    331         { 
    332                 .name           = "ZyXEL Prestige 334W", 
    333                 .mach_type      = MACH_ADM5120_P334W, 
    334                 .has_usb        = 0, 
    335                 .iface_num      = 5, 
    336                 .flash0_size    = 2*1024*1024, 
    337         }, 
    338         { 
    339                 .name           = "ZyXEL Prestige 334WH", 
    340                 .mach_type      = MACH_ADM5120_P334WH, 
    341                 .has_usb        = 0, 
    342                 .iface_num      = 5, 
    343                 .flash0_size    = 4*1024*1024, 
    344         }, 
    345         { 
    346                 .name           = "ZyXEL Prestige 334WHD", 
    347                 .mach_type      = MACH_ADM5120_P334WHD, 
    348                 .has_usb        = 0, 
    349                 .iface_num      = 5, 
    350                 .flash0_size    = 4*1024*1024, 
    351         }, 
    352         { 
    353                 .name           = "ZyXEL Prestige 334WT", 
    354                 .mach_type      = MACH_ADM5120_P334WT, 
    355                 .has_usb        = 1, 
    356                 .iface_num      = 5, 
    357                 .flash0_size    = 4*1024*1024, 
    358         }, 
    359         { 
    360                 .name           = "ZyXEL Prestige 335/335WT", 
    361                 .mach_type      = MACH_ADM5120_P335, 
    362                 .has_usb        = 1, 
    363                 .iface_num      = 5, 
    364                 .flash0_size    = 4*1024*1024, 
    365         }, 
    366         { 
    367                 .name           = "ZyXEL Prestige 335Plus", 
    368                 .mach_type      = MACH_ADM5120_P335PLUS, 
    369                 .has_usb        = 1, 
    370                 .iface_num      = 5, 
    371                 .flash0_size    = 4*1024*1024, 
    372         }, 
    373         { 
    374                 .name           = "ZyXEL Prestige 335U", 
    375                 .mach_type      = MACH_ADM5120_P335U, 
    376                 .has_usb        = 1, 
    377                 .iface_num      = 5, 
    378                 .flash0_size    = 4*1024*1024, 
    379         }, 
    380         { 
    381                 .name           = "Unknown ADM5120 board", 
    382                 .mach_type      = MACH_ADM5120_UNKNOWN, 
    383                 .has_usb        = 1, 
    384                 .iface_num      = 5, 
    385                 .flash0_size    = 4*1024*1024, 
    386         } 
    387 }; 
    388  
    389 #define DUMMY_BOARD()   {.mach_type = MACH_ADM5120_UNKNOWN} 
    390  
    391 struct mylo_board { 
    392         u16     vid; 
    393         u16     did; 
    394         u16     svid; 
    395         u16     sdid; 
    396         unsigned long   mach_type; 
    397 }; 
    398  
    399  
    400 #define MYLO_BOARD(v,d,sv,sd,mt) { .vid = (v), .did = (d), .svid = (sv), \ 
    401         .sdid = (sd), .mach_type = (mt) } 
    402  
    403 #define COMPEX_BOARD(d,mt) MYLO_BOARD(VENID_COMPEX,(d),VENID_COMPEX,(d),(mt)) 
    404  
    405 static struct mylo_board mylo_boards[] __initdata = { 
    406         COMPEX_BOARD(DEVID_COMPEX_NP27G, MACH_ADM5120_NP27G), 
    407         COMPEX_BOARD(DEVID_COMPEX_NP28G, MACH_ADM5120_NP28G), 
    408         COMPEX_BOARD(DEVID_COMPEX_NP28GHS, MACH_ADM5120_NP28GHS), 
    409         COMPEX_BOARD(DEVID_COMPEX_WP54G, MACH_ADM5120_WP54G), 
    410         COMPEX_BOARD(DEVID_COMPEX_WP54Gv1C, MACH_ADM5120_WP54Gv1C), 
    411         COMPEX_BOARD(DEVID_COMPEX_WP54AG, MACH_ADM5120_WP54AG), 
    412         COMPEX_BOARD(DEVID_COMPEX_WPP54G, MACH_ADM5120_WPP54G), 
    413         COMPEX_BOARD(DEVID_COMPEX_WPP54AG, MACH_ADM5120_WPP54AG), 
    414         DUMMY_BOARD() 
    415 }; 
    416  
    417 #define ROUTERBOARD_NAME_LEN    16 
    418  
    419 struct routerboard { 
    420         unsigned long   mach_type; 
    421         char    name[ROUTERBOARD_NAME_LEN]; 
    422 }; 
    423  
    424 #define ROUTERBOARD(n, mt) { .name = (n), .mach_type = (mt) } 
    425 static struct routerboard routerboards[] __initdata = { 
    426         ROUTERBOARD("111", MACH_ADM5120_RB_111), 
    427         ROUTERBOARD("112", MACH_ADM5120_RB_112), 
    428         ROUTERBOARD("133", MACH_ADM5120_RB_133), 
    429         ROUTERBOARD("133C", MACH_ADM5120_RB_133C), 
    430         ROUTERBOARD("miniROUTER", MACH_ADM5120_RB_150), 
    431         ROUTERBOARD("153", MACH_ADM5120_RB_150), 
    432         DUMMY_BOARD() 
    433 }; 
    434  
    435 struct zynos_board { 
    436         unsigned long   mach_type; 
    437         unsigned int    vendor_id; 
    438         u16             board_id; 
    439 }; 
    440  
    441 #define ZYNOS_BOARD(vi, bi, mt) { .vendor_id = (vi), .board_id = (bi), \ 
    442                 .mach_type = (mt) } 
    443  
    444 #define ZYXEL_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_ZYXEL, bi, mt) 
    445 #define DLINK_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_DLINK, bi, mt) 
    446 #define LUCENT_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_LUCENT, bi, mt) 
    447  
    448 static struct zynos_board zynos_boards[] __initdata = { 
    449         ZYXEL_BOARD(ZYNOS_BOARD_HS100, MACH_ADM5120_HS100), 
    450         ZYXEL_BOARD(ZYNOS_BOARD_P334, MACH_ADM5120_P334), 
    451         ZYXEL_BOARD(ZYNOS_BOARD_P334U, MACH_ADM5120_P334U), 
    452         ZYXEL_BOARD(ZYNOS_BOARD_P334W, MACH_ADM5120_P334W), 
    453         ZYXEL_BOARD(ZYNOS_BOARD_P334WH, MACH_ADM5120_P334WH), 
    454         ZYXEL_BOARD(ZYNOS_BOARD_P334WHD, MACH_ADM5120_P334WHD), 
    455         ZYXEL_BOARD(ZYNOS_BOARD_P334WT, MACH_ADM5120_P334WT), 
    456         ZYXEL_BOARD(ZYNOS_BOARD_P335, MACH_ADM5120_P335), 
    457         ZYXEL_BOARD(ZYNOS_BOARD_P335PLUS, MACH_ADM5120_P335PLUS), 
    458         ZYXEL_BOARD(ZYNOS_BOARD_P335U, MACH_ADM5120_P335U), 
    459         DUMMY_BOARD() 
    460 }; 
    461  
    462 struct common_board { 
    463         char *name; 
    464         unsigned long   mach_type; 
    465 }; 
    466  
    467 #define DEFBOARD(n, mt) { .name = (n), .mach_type = (mt) } 
    468 static struct common_board common_boards[] __initdata = { 
    469         DEFBOARD("CAS-630",             MACH_ADM5120_CAS630), 
    470         DEFBOARD("CAS-670",             MACH_ADM5120_CAS670), 
    471         DEFBOARD("CAS-700",             MACH_ADM5120_CAS700), 
    472         DEFBOARD("CAS-771",             MACH_ADM5120_CAS771), 
    473         DEFBOARD("CAS-790",             MACH_ADM5120_CAS790), 
    474         DEFBOARD("CAS-861",             MACH_ADM5120_CAS861), 
    475         DEFBOARD("NFS-101U",            MACH_ADM5120_NFS101U), 
    476         DEFBOARD("NFS-202U",            MACH_ADM5120_NFS202U), 
    477         DEFBOARD("EASY 5120",           MACH_ADM5120_EASY5120), 
    478         DEFBOARD("EASY 5120-RT",        MACH_ADM5120_EASY5120RT), 
    479         DEFBOARD("EASY 5120P-ATA",      MACH_ADM5120_EASY5120PATA), 
    480         DEFBOARD("EASY 83000",          MACH_ADM5120_EASY83000), 
    481         DEFBOARD("BR-6104K",            MACH_ADM5120_BR6104K), 
    482         DEFBOARD("WP54G-WRT",           MACH_ADM5120_WP54G_WRT), 
    483         DEFBOARD("P-334WT",             MACH_ADM5120_P334WT), 
    484         DEFBOARD("P-335",               MACH_ADM5120_P335), 
    485 }; 
    486  
    487 /* 
    488  * Helper routines 
    489  */ 
    490 static inline u16 read_le16(void *buf) 
    491 { 
    492         u8 *p; 
    493  
    494         p = buf; 
    495         return ((u16)p[0] + ((u16)p[1] << 8)); 
    496 } 
    497  
    498 static inline u32 read_le32(void *buf) 
    499 { 
    500         u8 *p; 
    501  
    502         p = buf; 
    503         return ((u32)p[0] + ((u32)p[1] << 8) + ((u32)p[2] << 16) + 
    504                 ((u32)p[3] << 24)); 
    505 } 
    506  
    507 static inline u16 read_be16(void *buf) 
    508 { 
    509         u8 *p; 
    510  
    511         p = buf; 
    512         return (((u16)p[0] << 8) + (u16)p[1]); 
    513 } 
    514  
    515 static inline u32 read_be32(void *buf) 
    516 { 
    517         u8 *p; 
    518  
    519         p = buf; 
    520         return (((u32)p[0] << 24) + ((u32)p[1] << 16) + ((u32)p[2] << 8) + 
    521                 ((u32)p[3])); 
    522 } 
    523  
    524 /* 
    525  * CFE based boards 
    526  */ 
    527 #define CFE_EPTSEAL     0x43464531 /* CFE1 is the magic number to recognize CFE 
    528 from other bootloaders */ 
    529  
    530 static int __init cfe_present(void) 
    531 { 
    532         /* 
    533          * This method only works, when we are booted directly from the CFE. 
    534          */ 
    535         u32 cfe_handle = (u32) fw_arg0; 
    536         u32 cfe_a1_val = (u32) fw_arg1; 
    537         u32 cfe_entry = (u32) fw_arg2; 
    538         u32 cfe_seal = (u32) fw_arg3; 
    539  
    540         /* Check for CFE by finding the CFE magic number */ 
    541         if (cfe_seal != CFE_EPTSEAL) { 
    542                 /* We are not booted from CFE */ 
    543                 return 0; 
    544         } 
    545  
    546         /* cfe_a1_val must be 0, because only one CPU present in the ADM5120 */ 
    547         if (cfe_a1_val != 0) { 
    548                 return 0; 
    549         } 
    550  
    551         /* The cfe_handle, and the cfe_entry must be kernel mode addresses */ 
    552         if ((cfe_handle < KSEG0) || (cfe_entry < KSEG0)) { 
    553                 return 0; 
    554         } 
    555  
    556         return 1; 
    557 } 
    558  
    559 static unsigned long __init cfe_detect_board(void) 
    560 { 
    561         return MACH_ADM5120_WP54G_WRT; 
    562 } 
    563  
    564 /* 
    565  * MyLoader based boards 
    566  */ 
    567 #define SYS_PARAMS_ADDR         KSEG1ADDR(ADM5120_SRAM0_BASE+0x0F000) 
    568 #define BOARD_PARAMS_ADDR       KSEG1ADDR(ADM5120_SRAM0_BASE+0x0F800) 
    569 #define PART_TABLE_ADDR         KSEG1ADDR(ADM5120_SRAM0_BASE+0x10000) 
    570  
    571 static unsigned long __init myloader_detect_board(void) 
    572 { 
    573         struct mylo_system_params *sysp; 
    574         struct mylo_board_params *boardp; 
    575         struct mylo_partition_table *parts; 
    576         struct mylo_board *board; 
    577         unsigned long ret; 
    578  
    579         ret = MACH_ADM5120_UNKNOWN; 
    580  
    581         sysp = (struct mylo_system_params *)(SYS_PARAMS_ADDR); 
    582         boardp = (struct mylo_board_params *)(BOARD_PARAMS_ADDR); 
    583         parts = (struct mylo_partition_table *)(PART_TABLE_ADDR); 
    584  
    585         /* Check for some magic numbers */ 
    586         if ((le32_to_cpu(sysp->magic) != MYLO_MAGIC_SYS_PARAMS) || 
    587            (le32_to_cpu(boardp->magic) != MYLO_MAGIC_BOARD_PARAMS) || 
    588            (le32_to_cpu(parts->magic) != MYLO_MAGIC_PARTITIONS)) 
    589                 goto out; 
    590  
    591         for (board = mylo_boards; board->mach_type != MACH_ADM5120_UNKNOWN; 
    592                 board++) { 
    593                 if ((le16_to_cpu(sysp->vid) == board->vid) && 
    594                         (le16_to_cpu(sysp->did) == board->did) && 
    595                         (le16_to_cpu(sysp->svid) == board->svid) && 
    596                         (le16_to_cpu(sysp->sdid) == board->sdid)) { 
    597                         ret = board->mach_type; 
    598                         break; 
    599                 } 
    600         } 
    601  
    602         /* assume MyLoader as the boot-loader */ 
    603         adm5120_boot_loader = BOOT_LOADER_MYLOADER; 
    604  
    605 out: 
    606         return ret; 
    607 } 
    608  
    609 /* 
    610  * RouterBOOT based boards 
    611  */ 
    612 static int __init routerboot_load_hs(u8 *buf, u16 buflen, 
    613         struct rb_hard_settings *hs) 
    614 { 
    615         u16 id,len; 
    616         u8 *mac; 
    617         int i,j; 
    618  
    619         if (buflen < 4) 
    620                 return -1; 
    621  
    622         if (read_le32(buf) != RB_MAGIC_HARD) 
    623                 return -1; 
    624  
    625         /* skip magic value */ 
    626         buf += 4; 
    627         buflen -= 4; 
    628  
    629         while (buflen > 2) { 
    630                 id = read_le16(buf); 
    631                 buf += 2; 
    632                 buflen -= 2; 
    633                 if (id == RB_ID_TERMINATOR || buflen < 2) 
    634                         break; 
    635  
    636                 len = read_le16(buf); 
    637                 buf += 2; 
    638                 buflen -= 2; 
    639  
    640                 if (buflen < len) 
    641                         break; 
    642  
    643                 switch (id) { 
    644                 case RB_ID_BIOS_VERSION: 
    645                         hs->bios_ver = (char *)buf; 
    646                         break; 
    647                 case RB_ID_BOARD_NAME: 
    648                         hs->name = (char *)buf; 
    649                         break; 
    650                 case RB_ID_MEMORY_SIZE: 
    651                         hs->mem_size = read_le32(buf); 
    652                         break; 
    653                 case RB_ID_MAC_ADDRESS_COUNT: 
    654                         hs->mac_count = read_le32(buf); 
    655                         break; 
    656                 case RB_ID_MAC_ADDRESS_PACK: 
    657                         hs->mac_count = len/RB_MAC_SIZE; 
    658                         if (hs->mac_count > RB_MAX_MAC_COUNT) 
    659                                 hs->mac_count = RB_MAX_MAC_COUNT; 
    660                         mac = buf; 
    661                         for (i=0; i < hs->mac_count; i++) { 
    662                                 for (j=0; j < RB_MAC_SIZE; j++) 
    663                                         hs->macs[i][j] = mac[j]; 
    664                                 mac += RB_MAC_SIZE; 
    665                         } 
    666                         break; 
    667                 } 
    668  
    669                 buf += len; 
    670                 buflen -= len; 
    671  
    672         } 
    673  
    674         return 0; 
    675 } 
    676  
    677 #define RB_BS_OFFS      0x14 
    678 #define RB_OFFS_MAX     (128*1024) 
    679  
    680 static unsigned long __init routerboot_detect_board(void) 
    681 { 
    682         struct routerboard *board; 
    683         struct rb_hard_settings hs; 
    684         struct rb_bios_settings *bs; 
    685         u8 *base; 
    686         u32 off,len; 
    687         unsigned long ret; 
    688  
    689         ret = MACH_ADM5120_UNKNOWN; 
    690  
    691         base = (u8 *)KSEG1ADDR(ADM5120_SRAM0_BASE); 
    692         bs = (struct rb_bios_settings *)(base + RB_BS_OFFS); 
    693  
    694         off = read_le32(&bs->hs_offs); 
    695         len = read_le32(&bs->hs_size); 
    696         if (off > RB_OFFS_MAX) 
    697                 return ret; 
    698  
    699         memset(&hs, 0, sizeof(hs)); 
    700         if (routerboot_load_hs(base+off, len, &hs) != 0) 
    701                 return ret; 
    702  
    703         /* assume RouterBOOT as the boot-loader */ 
    704         adm5120_boot_loader = BOOT_LOADER_ROUTERBOOT; 
    705  
    706         if (hs.name == NULL) 
    707                 return ret; 
    708  
    709         for (board = routerboards; board->mach_type != MACH_ADM5120_UNKNOWN; 
    710                 board++) { 
    711                 if (strncmp(board->name, hs.name, strlen(board->name)) == 0) { 
    712                         ret = board->mach_type; 
    713                         break; 
    714                 } 
    715         } 
    716  
    717         return ret; 
    718 } 
    719  
    720 /* 
    721  * ZyNOS based boards 
    722  */ 
    723 static inline u32 zynos_dbgarea_present(u8 *data) 
    724 { 
    725         u32 t; 
    726  
    727         t = read_be32(data+5); 
    728         if (t != ZYNOS_MAGIC_DBGAREA1) 
    729                 return 0; 
    730  
    731         t = read_be32(data+9); 
    732         if (t != ZYNOS_MAGIC_DBGAREA2) 
    733                 return 0; 
    734  
    735         return 1; 
    736 } 
    737  
    738 #define CHECK_VENDOR(n) (strnicmp(vendor,(n),strlen(n)) == 0) 
    739  
    740 static inline unsigned int zynos_get_vendor_id(struct zynos_board_info *info) 
    741 { 
    742         unsigned char vendor[ZYNOS_NAME_LEN]; 
    743         int i; 
    744  
    745         for (i=0; i<ZYNOS_NAME_LEN; i++) 
    746                 vendor[i]=info->vendor[i]; 
    747  
    748         if CHECK_VENDOR(ZYNOS_VENDOR_ZYXEL) 
    749                 return ZYNOS_VENDOR_ID_ZYXEL; 
    750 #if 0 
    751         /* TODO: there are no known ADM5120 based boards from other vendors */ 
    752         if CHECK_VENDOR(ZYNOS_VENDOR_DLINK) 
    753                 return ZYNOS_VENDOR_ID_DLINK; 
    754  
    755         if CHECK_VENDOR(ZYNOS_VENDOR_LUCENT) 
    756                 return ZYNOS_VENDOR_ID_LUCENT; 
    757  
    758         if CHECK_VENDOR(ZYNOS_VENDOR_NETGEAR) 
    759                 return ZYNOS_VENDOR_ID_NETGEAR; 
    760 #endif 
    761  
    762         return ZYNOS_VENDOR_ID_OTHER; 
    763 } 
    764  
    765 static inline u16 zynos_get_board_id(struct zynos_board_info *info) 
    766 { 
    767         return read_be16(&info->board_id); 
    768 } 
    769  
    770 static inline u32 zynos_get_bootext_addr(struct zynos_board_info *info) 
    771 { 
    772         return read_be32(&info->bootext_addr); 
    773 } 
    774  
    775  
    776 #define ZYNOS_INFO_ADDR         KSEG1ADDR(ADM5120_SRAM0_BASE+0x3F90) 
    777 #define ZYNOS_HDBG_ADDR         KSEG1ADDR(ADM5120_SRAM0_BASE+0x4000) 
    778 #define BOOTEXT_ADDR_MIN        KSEG1ADDR(ADM5120_SRAM0_BASE) 
    779 #define BOOTEXT_ADDR_MAX        (BOOTEXT_ADDR_MIN + (2*1024*1024)) 
    780  
    781 static unsigned long __init zynos_detect_board(void) 
    782 { 
    783         struct zynos_board_info *info; 
    784         struct zynos_board *board; 
    785         unsigned int vendor_id; 
    786         u16     board_id; 
    787         u32     t; 
    788         unsigned long ret; 
    789  
    790         ret = MACH_ADM5120_UNKNOWN; 
    791         /* check presence of the dbgarea */ 
    792         if (zynos_dbgarea_present((u8 *)ZYNOS_HDBG_ADDR) == 0) 
    793                 goto out; 
    794  
    795         info = (struct zynos_board_info *)(ZYNOS_INFO_ADDR); 
    796  
    797         /* check for a valid BootExt address */ 
    798         t = zynos_get_bootext_addr(info); 
    799         if ((t < BOOTEXT_ADDR_MIN) || (t > BOOTEXT_ADDR_MAX)) 
    800                 goto out; 
    801  
    802         vendor_id = zynos_get_vendor_id(info); 
    803         board_id = zynos_get_board_id(info); 
    804  
    805         for (board = zynos_boards; board->mach_type != MACH_ADM5120_UNKNOWN; 
    806                 board++) { 
    807                 if ((board->vendor_id == vendor_id) && 
    808                         (board->board_id == board_id)) { 
    809                         ret = board->mach_type; 
    810                         break; 
    811                 } 
    812         } 
    813  
    814         /* assume Bootbase as the boot-loader */ 
    815         adm5120_boot_loader = BOOT_LOADER_BOOTBASE; 
    816  
    817 out: 
    818         return ret; 
    819 } 
    820  
    821 /* 
    822  * U-Boot based boards 
    823  */ 
    824 static int __init uboot_present(void) 
    825 { 
    826         /* FIXME: not yet implemented */ 
    827         return 0; 
    828 } 
    829  
    830 static unsigned long __init uboot_detect_board(void) 
    831 { 
    832         /* FIXME: not yet implemented */ 
    833         return MACH_ADM5120_UNKNOWN; 
    834 } 
    835  
    836 /* 
    837  * Misc boards 
    838  */ 
    839 static unsigned long __init prom_detect_board(void) 
    840 { 
    841         char *name; 
    842         unsigned long ret; 
    843         int i; 
    844  
    845         ret = MACH_ADM5120_UNKNOWN; 
    846         name = prom_getenv("board_name"); 
    847         if (name == NULL) 
    848                 goto out; 
    849  
    850         if (*name == '\0') 
    851                 goto out; 
    852  
    853         for (i=0; i<ARRAY_SIZE(common_boards); i++) { 
    854                 if (strcmp(common_boards[i].name, name) == 0) { 
    855                         ret = common_boards[i].mach_type; 
    856                         break; 
    857                 } 
    858         } 
    859  
    860 out: 
    861         return ret; 
    862 } 
    863  
    864 static void __init adm5120_detect_board(void) 
    865 { 
    866         struct adm5120_board *board; 
    867         unsigned long t; 
    868  
    869         adm5120_boot_loader = BOOT_LOADER_UNKNOWN; 
    870  
    871         /* Try to detect board type without bootloader */ 
    872         t = routerboot_detect_board(); 
    873  
    874         if (t == MACH_ADM5120_UNKNOWN) 
    875                 t = zynos_detect_board(); 
    876  
    877         if (t == MACH_ADM5120_UNKNOWN) 
    878                 t = myloader_detect_board(); 
    879  
    880         /* Try to detect bootloader type */ 
    881         if (cfe_present()) { 
    882                 adm5120_boot_loader = BOOT_LOADER_CFE; 
    883                 if (t == MACH_ADM5120_UNKNOWN) 
    884                         t = cfe_detect_board(); 
    885         } else if (uboot_present()) { 
    886                 adm5120_boot_loader = BOOT_LOADER_UBOOT; 
    887                 if (t == MACH_ADM5120_UNKNOWN) 
    888                         t = uboot_detect_board(); 
    889         } else { 
    890                 if (t == MACH_ADM5120_UNKNOWN) 
    891                         t = prom_detect_board(); 
    892         } 
    893  
    894         for (board = adm5120_boards; board->mach_type != MACH_ADM5120_UNKNOWN; 
    895                 board++) { 
    896                 if (board->mach_type == t) 
    897                         break; 
    898         } 
    899  
    900         memcpy(&adm5120_board, board, sizeof(adm5120_board)); 
    901 } 
    90240 
    90341#define SWITCH_READ(r) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r)) 
     
    91351#define CODE_GET_NAB(c)         (((c) & CODE_NAB) != 0) 
    91452 
    915 static void __init adm5120_detect_cpuinfo(void) 
    916 { 
    917         u32 code; 
    918         u32 clks; 
    919  
    920         code = SWITCH_READ(SWITCH_REG_CODE); 
    921  
    922         adm5120_product_code = CODE_GET_PC(code); 
    923         adm5120_revision = CODE_GET_REV(code); 
    924         adm5120_package = (CODE_GET_PK(code) == CODE_PK_BGA) ? 
    925                 ADM5120_PACKAGE_BGA : ADM5120_PACKAGE_PQFP; 
    926         adm5120_nand_boot = CODE_GET_NAB(code); 
    927  
    928         clks = CODE_GET_CLKS(code); 
    929         adm5120_speed = ADM5120_SPEED_175; 
    930         if (clks & 1) 
    931                 adm5120_speed += 25000000; 
    932         if (clks & 2) 
    933                 adm5120_speed += 50000000; 
    934 } 
    935  
    936 static void adm5120_ndelay(u32 ns) 
     53void adm5120_ndelay(u32 ns) 
    93754{ 
    93855        u32     t; 
     
    95572} 
    95673 
    957 #define MPMC_READ(r) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r)) 
    958 #define MPMC_WRITE(r,v) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r))=(v) 
     74void __init adm5120_soc_init(void) 
     75{ 
     76        u32 code; 
     77        u32 clks; 
    95978 
    960 extern void prom_printf(char *, ...); 
    961 #if 1 
    962 #  define mem_dbg(f, a...)      prom_printf("mem_detect: " f, ## a) 
    963 #else 
    964 #  define mem_dbg(f, a...) 
    965 #endif 
     79        code = SWITCH_READ(SWITCH_REG_CODE); 
    96680 
    967 #define MEM_WR_DELAY    10000 /* 0.01 usec */ 
     81        adm5120_product_code = CODE_GET_PC(code); 
     82        adm5120_revision = CODE_GET_REV(code); 
     83        adm5120_package = (CODE_GET_PK(code) == CODE_PK_BGA) ? 
     84                ADM5120_PACKAGE_BGA : ADM5120_PACKAGE_PQFP; 
     85        adm5120_nand_boot = CODE_GET_NAB(code); 
    96886 
    969 static int mem_check_pattern(u8 *addr, unsigned long offs) 
    970 { 
    971         volatile u32 *p1 = (volatile u32 *)addr; 
    972         volatile u32 *p2 = (volatile u32 *)(addr+offs); 
    973         u32 t,u,v; 
    974  
    975         /* save original value */ 
    976         t = *p1; 
    977         u = *p2; 
    978  
    979         if (t != u) 
    980                 return 0; 
    981  
    982         v = 0x55555555; 
    983         if (u == v) 
    984                 v = 0xAAAAAAAA; 
    985  
    986         mem_dbg("write 0x%08lX to 0x%08lX\n", v, (unsigned long)p1); 
    987  
    988         *p1 = v; 
    989         mem_dbg("delay %d ns\n", MEM_WR_DELAY); 
    990         adm5120_ndelay(MEM_WR_DELAY); 
    991         u = *p2; 
    992  
    993         mem_dbg("pattern at 0x%08lX is 0x%08lX\n", (unsigned long)p2, u); 
    994  
    995         /* restore original value */ 
    996         *p1 = t; 
    997  
    998         return (v == u); 
     87        clks = CODE_GET_CLKS(code); 
     88        adm5120_speed = ADM5120_SPEED_175; 
     89        if (clks & 1) 
     90                adm5120_speed += 25000000; 
     91        if (clks & 2) 
     92                adm5120_speed += 50000000; 
    99993} 
    1000  
    1001 static void __init adm5120_detect_memsize(void) 
    1002 { 
    1003         u32     memctrl; 
    1004         u32     size, maxsize; 
    1005         u8      *p; 
    1006  
    1007         memctrl = SWITCH_READ(SWITCH_REG_MEMCTRL); 
    1008         switch (memctrl & MEMCTRL_SDRS_MASK) { 
    1009         case MEMCTRL_SDRS_4M: 
    1010                 maxsize = 4 << 20; 
    1011                 break; 
    1012         case MEMCTRL_SDRS_8M: 
    1013                 maxsize = 8 << 20; 
    1014                 break; 
    1015         case MEMCTRL_SDRS_16M: 
    1016                 maxsize = 16 << 20; 
    1017                 break; 
    1018         default: 
    1019                 maxsize = 64 << 20; 
    1020                 break; 
    1021         } 
    1022  
    1023         /* disable buffers for both SDRAM banks */ 
    1024         mem_dbg("disable buffers for both banks\n"); 
    1025         MPMC_WRITE(MPMC_REG_DC0, MPMC_READ(MPMC_REG_DC0) & ~DC_BE); 
    1026         MPMC_WRITE(MPMC_REG_DC1, MPMC_READ(MPMC_REG_DC1) & ~DC_BE); 
    1027  
    1028         mem_dbg("checking for %ldMB chip in 1st bank\n", maxsize >> 20); 
    1029  
    1030         /* detect size of the 1st SDRAM bank */ 
    1031         p = (u8 *)KSEG1ADDR(0); 
    1032         for (size = 2<<20; size <= (maxsize >> 1); size <<= 1) { 
    1033                 if (mem_check_pattern(p, size)) { 
    1034                         /* mirrored address */ 
    1035                         mem_dbg("mirrored data found at offset 0x%lX\n", size); 
    1036                         break; 
    1037                 } 
    1038         } 
    1039  
    1040         mem_dbg("chip size in 1st bank is %ldMB\n", size >> 20); 
    1041         adm5120_memsize = size; 
    1042  
    1043         if (size != maxsize) 
    1044                 /* 2nd bank is not supported */ 
    1045                 goto out; 
    1046  
    1047         if ((memctrl & MEMCTRL_SDR1_ENABLE) == 0) 
    1048                 /* 2nd bank is disabled */ 
    1049                 goto out; 
    1050  
    1051         /* 
    1052          * some bootloaders enable 2nd bank, even if the 2nd SDRAM chip 
    1053          * are missing. 
    1054          */ 
    1055         mem_dbg("check presence of 2nd bank\n"); 
    1056  
    1057         p = (u8 *)KSEG1ADDR(maxsize+size-4); 
    1058         if (mem_check_pattern(p, 0)) { 
    1059                 adm5120_memsize += size; 
    1060         } 
    1061  
    1062         if (maxsize != size) { 
    1063                 /* adjusting MECTRL register */ 
    1064                 memctrl &= ~(MEMCTRL_SDRS_MASK); 
    1065                 switch (size>>20) { 
    1066                 case 4: 
    1067                         memctrl |= MEMCTRL_SDRS_4M; 
    1068                         break; 
    1069                 case 8: 
    1070                         memctrl |= MEMCTRL_SDRS_8M; 
    1071                         break; 
    1072                 case 16: 
    1073                         memctrl |= MEMCTRL_SDRS_16M; 
    1074                         break; 
    1075                 default: 
    1076                         memctrl |= MEMCTRL_SDRS_64M; 
    1077                         break; 
    1078                 } 
    1079                 SWITCH_WRITE(SWITCH_REG_MEMCTRL, memctrl); 
    1080         } 
    1081  
    1082 out: 
    1083         /* reenable buffer for both SDRAM banks */ 
    1084         mem_dbg("enable buffers for both banks\n"); 
    1085         MPMC_WRITE(MPMC_REG_DC0, MPMC_READ(MPMC_REG_DC0) | DC_BE); 
    1086         MPMC_WRITE(MPMC_REG_DC1, MPMC_READ(MPMC_REG_DC1) | DC_BE); 
    1087  
    1088         mem_dbg("%dx%ldMB memory found\n", (adm5120_memsize == size) ? 1 : 2 , 
    1089                 size >>20); 
    1090  
    1091         size = adm5120_board_memsize(); 
    1092         if (size > 0 && size != adm5120_memsize) { 
    1093                 mem_dbg("wrong memory size detected, board settings will be used\n"); 
    1094                 adm5120_memsize = size; 
    1095         } 
    1096 } 
    1097  
    1098 void __init adm5120_info_show(void) 
    1099 { 
    1100         /* FIXME: move this somewhere else */ 
    1101         printk(KERN_INFO "ADM%04X%s revision %d, running at %ldMHz\n", 
    1102                 adm5120_product_code, 
    1103                 (adm5120_package == ADM5120_PACKAGE_BGA) ? "" : "P", 
    1104                 adm5120_revision, (adm5120_speed / 1000000) 
    1105                 ); 
    1106         printk(KERN_INFO "Boot loader is: %s\n", boot_loader_names[adm5120_boot_loader]); 
    1107         printk(KERN_INFO "Booted from   : %s flash\n", adm5120_nand_boot ? "NAND":"NOR"); 
    1108         printk(KERN_INFO "Board is      : %s\n", adm5120_board_name()); 
    1109         printk(KERN_INFO "Memory size   : %ldMB\n", adm5120_memsize >> 20); 
    1110 } 
    1111  
    1112 void __init adm5120_info_init(void) 
    1113 { 
    1114         adm5120_detect_cpuinfo(); 
    1115         adm5120_detect_board(); 
    1116         adm5120_detect_memsize(); 
    1117  
    1118         adm5120_info_show(); 
    1119 } 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/gpio.c

    r7673 r7916  
    346346} 
    347347 
    348 subsys_initcall(adm5120_gpio_init); 
     348pure_initcall(adm5120_gpio_init); 
    349349 
    350350EXPORT_SYMBOL(adm5120_gpio_direction_output); 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/memory.c

    r7673 r7916  
    1 /***************************************************************************** 
    2  * Carsten Langgaard, carstenl@mips.com 
    3  * Copyright (C) 1999,2000 MIPS Technologies, Inc.  All rights reserved. 
    4  * Copyright (C) 2003 ADMtek Incorporated. 
    5  *      daniell@admtek.com.tw 
    6  * Copyright (C) 2005 Jeroen Vreeken (pe1rxq@amsat.org) 
     1/* 
     2 *  $Id$ 
    73 * 
    8  * ######################################################################## 
     4 *  Copyright (C) 2007 OpenWrt.org 
     5 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
    96 * 
    10  *  This program is free software; you can distribute it and/or modify it 
    11  *  under the terms of the GNU General Public License (Version 2) as 
    12  *  published by the Free Software Foundation. 
     7 *  This program is free software; you can redistribute it and/or 
     8 *  modify it under the terms of the GNU General Public License 
     9 *  as published by the Free Software Foundation; either version 2 
     10 *  of the License, or (at your option) any later version. 
    1311 * 
    14  *  This program is distributed in the hope it will be useful, but WITHOUT 
    15  *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
    16  *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
    17  *  for more details. 
     12 *  This program is distributed in the hope that it will be useful, 
     13 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     14 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     15 *  GNU General Public License for more details. 
    1816 * 
    19  *  You should have received a copy of the GNU General Public License along 
    20  *  with this program; if not, write to the Free Software Foundation, Inc., 
    21  *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 
     17 *  You should have received a copy of the GNU General Public License 
     18 *  along with this program; if not, write to the 
     19 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     20 *  Boston, MA  02110-1301, USA. 
    2221 * 
    23  * ######################################################################## 
    24  * 
    25  *****************************************************************************/ 
     22 */ 
    2623 
    27 #include <linux/autoconf.h> 
    2824#include <linux/init.h> 
    29 #include <linux/mm.h> 
    30 #include <linux/bootmem.h> 
    31 #include <linux/pfn.h> 
    32 #include <linux/string.h> 
     25#include <linux/types.h> 
     26#include <linux/kernel.h> 
    3327 
    3428#include <asm/bootinfo.h> 
    35 #include <asm/page.h> 
    36 #include <asm/sections.h> 
     29#include <asm/addrspace.h> 
    3730 
    3831#include <asm/mach-adm5120/adm5120_info.h> 
    39 #include <asm-mips/mips-boards/prom.h> 
     32#include <asm/mach-adm5120/adm5120_defs.h> 
     33#include <asm/mach-adm5120/adm5120_switch.h> 
     34#include <asm/mach-adm5120/adm5120_mpmc.h> 
    4035 
    41 #define PFN_ALIGN(x)    (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK) 
     36#define SWITCH_READ(r) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r)) 
     37#define SWITCH_WRITE(r,v) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r))=(v) 
    4238 
    43 struct prom_pmemblock mdesc[PROM_MAX_PMEMBLOCKS]; 
     39#define MPMC_READ(r) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r)) 
     40#define MPMC_WRITE(r,v) *(u32 *)(KSEG1ADDR(ADM5120_SWITCH_BASE)+(r))=(v) 
    4441 
    45 struct prom_pmemblock * __init prom_getmdesc(void) 
     42#if 1 
     43#  define mem_dbg(f, a...)      printk("mem_detect: " f, ## a) 
     44#else 
     45#  define mem_dbg(f, a...) 
     46#endif 
     47 
     48#define MEM_WR_DELAY    10000 /* 0.01 usec */ 
     49 
     50unsigned long adm5120_memsize; 
     51 
     52static int __init mem_check_pattern(u8 *addr, unsigned long offs) 
    4653{ 
    47         unsigned int memsize; 
    48         char cmdline[CL_SIZE], *ptr; 
     54        volatile u32 *p1 = (volatile u32 *)addr; 
     55        volatile u32 *p2 = (volatile u32 *)(addr+offs); 
     56        u32 t,u,v; 
    4957 
    50         memsize = adm5120_memsize; 
    51         /* Check the command line for a memsize directive that overrides 
    52          * the physical/default amount */ 
    53         strcpy(cmdline, arcs_cmdline); 
    54         ptr = strstr(cmdline, "memsize="); 
    55         if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' ')) 
    56         ptr = strstr(ptr, " memsize="); 
     58        /* save original value */ 
     59        t = *p1; 
     60        u = *p2; 
    5761 
    58         if (ptr) 
    59                 memsize = memparse(ptr + 8, &ptr); 
    60          
    61         memset(mdesc, 0, sizeof(mdesc)); 
    62         mdesc[0].type = BOOT_MEM_RAM; 
    63         mdesc[0].base = CPHYSADDR(PFN_ALIGN(&_end)); 
    64         mdesc[0].size = memsize - mdesc[0].base; 
     62        if (t != u) 
     63                return 0; 
    6564 
    66         return &mdesc[0]; 
     65        v = 0x55555555; 
     66        if (u == v) 
     67                v = 0xAAAAAAAA; 
     68 
     69        mem_dbg("write 0x%08lX to 0x%08lX\n", v, (unsigned long)p1); 
     70 
     71        *p1 = v; 
     72        mem_dbg("delay %d ns\n", MEM_WR_DELAY); 
     73        adm5120_ndelay(MEM_WR_DELAY); 
     74        u = *p2; 
     75 
     76        mem_dbg("pattern at 0x%08lX is 0x%08lX\n", (unsigned long)p2, u); 
     77 
     78        /* restore original value */ 
     79        *p1 = t; 
     80 
     81        return (v == u); 
    6782} 
    6883 
    69 void __init prom_meminit(void) 
     84static void __init adm5120_detect_memsize(void) 
    7085{ 
    71         struct prom_pmemblock *p; 
     86        u32     memctrl; 
     87        u32     size, maxsize; 
     88        u8      *p; 
    7289 
    73         p = prom_getmdesc(); 
     90        memctrl = SWITCH_READ(SWITCH_REG_MEMCTRL); 
     91        switch (memctrl & MEMCTRL_SDRS_MASK) { 
     92        case MEMCTRL_SDRS_4M: 
     93                maxsize = 4 << 20; 
     94                break; 
     95        case MEMCTRL_SDRS_8M: 
     96                maxsize = 8 << 20; 
     97                break; 
     98        case MEMCTRL_SDRS_16M: 
     99                maxsize = 16 << 20; 
     100                break; 
     101        default: 
     102                maxsize = 64 << 20; 
     103                break; 
     104        } 
    74105 
    75         while (p->size) 
    76         { 
    77                 long type; 
    78                 unsigned long base, size; 
    79                 base = p->base; 
    80                 type = p->type, 
    81                 size = p->size; 
    82                 add_memory_region(base, size, type); 
    83                 p++; 
     106        /* disable buffers for both SDRAM banks */ 
     107        mem_dbg("disable buffers for both banks\n"); 
     108        MPMC_WRITE(MPMC_REG_DC0, MPMC_READ(MPMC_REG_DC0) & ~DC_BE); 
     109        MPMC_WRITE(MPMC_REG_DC1, MPMC_READ(MPMC_REG_DC1) & ~DC_BE); 
     110 
     111        mem_dbg("checking for %ldMB chip in 1st bank\n", maxsize >> 20); 
     112 
     113        /* detect size of the 1st SDRAM bank */ 
     114        p = (u8 *)KSEG1ADDR(0); 
     115        for (size = 2<<20; size <= (maxsize >> 1); size <<= 1) { 
     116                if (mem_check_pattern(p, size)) { 
     117                        /* mirrored address */ 
     118                        mem_dbg("mirrored data found at offset 0x%lX\n", size); 
     119                        break; 
     120                } 
    84121        } 
     122 
     123        mem_dbg("chip size in 1st bank is %ldMB\n", size >> 20); 
     124        adm5120_memsize = size; 
     125 
     126        if (size != maxsize) 
     127                /* 2nd bank is not supported */ 
     128                goto out; 
     129 
     130        if ((memctrl & MEMCTRL_SDR1_ENABLE) == 0) 
     131                /* 2nd bank is disabled */ 
     132                goto out; 
     133 
     134        /* 
     135         * some bootloaders enable 2nd bank, even if the 2nd SDRAM chip 
     136         * are missing. 
     137         */ 
     138        mem_dbg("check presence of 2nd bank\n"); 
     139 
     140        p = (u8 *)KSEG1ADDR(maxsize+size-4); 
     141        if (mem_check_pattern(p, 0)) { 
     142                adm5120_memsize += size; 
     143        } 
     144 
     145        if (maxsize != size) { 
     146                /* adjusting MECTRL register */ 
     147                memctrl &= ~(MEMCTRL_SDRS_MASK); 
     148                switch (size>>20) { 
     149                case 4: 
     150                        memctrl |= MEMCTRL_SDRS_4M; 
     151                        break; 
     152                case 8: 
     153                        memctrl |= MEMCTRL_SDRS_8M; 
     154                        break; 
     155                case 16: 
     156                        memctrl |= MEMCTRL_SDRS_16M; 
     157                        break; 
     158                default: 
     159                        memctrl |= MEMCTRL_SDRS_64M; 
     160                        break; 
     161                } 
     162                SWITCH_WRITE(SWITCH_REG_MEMCTRL, memctrl); 
     163        } 
     164 
     165out: 
     166        /* reenable buffer for both SDRAM banks */ 
     167        mem_dbg("enable buffers for both banks\n"); 
     168        MPMC_WRITE(MPMC_REG_DC0, MPMC_READ(MPMC_REG_DC0) | DC_BE); 
     169        MPMC_WRITE(MPMC_REG_DC1, MPMC_READ(MPMC_REG_DC1) | DC_BE); 
     170 
     171        mem_dbg("%dx%ldMB memory found\n", (adm5120_memsize == size) ? 1 : 2 , 
     172                size >>20); 
    85173} 
    86174 
    87 void __init prom_free_prom_memory(void) 
     175void __init adm5120_mem_init(void) 
    88176{ 
    89         /* We do not have to prom memory to free */ 
     177        adm5120_detect_memsize(); 
     178        add_memory_region(0, adm5120_memsize, BOOT_MEM_RAM); 
    90179} 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/prom.c

    r7736 r7916  
    1 /***************************************************************************** 
    2  * Carsten Langgaard, carstenl@mips.com 
    3  * Copyright (C) 1999,2000 MIPS Technologies, Inc.  All rights reserved. 
    4  * Copyright (C) 2003 ADMtek Incorporated. 
    5  *      daniell@admtek.com.tw 
    6  * Copyright (C) 2007 OpenWrt.org 
    7  * 
    8  *  This program is free software; you can distribute it and/or modify it 
    9  *  under the terms of the GNU General Public License (Version 2) as 
    10  *  published by the Free Software Foundation. 
    11  * 
    12  *  This program is distributed in the hope it will be useful, but WITHOUT 
    13  *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
    14  *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
    15  *  for more details. 
    16  * 
    17  *  You should have received a copy of the GNU General Public License along 
    18  *  with this program; if not, write to the Free Software Foundation, Inc., 
    19  *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 
    20  * 
    21  *****************************************************************************/ 
     1/* 
     2 *  $Id$ 
     3 * 
     4 *  ADM5120 specific prom routines 
     5 * 
     6 *  Copyright (C) 2007 OpenWrt.org 
     7 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
     8 * 
     9 *  This program is free software; you can redistribute it and/or 
     10 *  modify it under the terms of the GNU General Public License 
     11 *  as published by the Free Software Foundation; either version 2 
     12 *  of the License, or (at your option) any later version. 
     13 * 
     14 *  This program is distributed in the hope that it will be useful, 
     15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17 *  GNU General Public License for more details. 
     18 * 
     19 *  You should have received a copy of the GNU General Public License 
     20 *  along with this program; if not, write to the 
     21 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     22 *  Boston, MA  02110-1301, USA. 
     23 * 
     24 */ 
    2225 
    2326#include <linux/init.h> 
    24 #include <linux/autoconf.h> 
    2527#include <linux/kernel.h> 
    2628#include <linux/string.h> 
    2729#include <linux/mm.h> 
    28 #include <linux/bootmem.h> 
    2930 
    3031#include <asm/bootinfo.h> 
     
    3233 
    3334#include <asm/mach-adm5120/adm5120_info.h> 
    34  
    35 static char **prom_envp = NULL; 
    36  
    37 void setup_prom_printf(int); 
    38 void prom_printf(char *, ...); 
    39 void prom_meminit(void); 
    40  
    41  
    42 #define READCSR(r)      *(volatile unsigned long *)(0xB2600000+(r)) 
    43 #define WRITECSR(r,v)   *(volatile unsigned long *)(0xB2600000+(r)) = v 
    44  
    45 #define UART_DR_REG         0x00 
    46 #define UART_FR_REG         0x18 
    47 #define UART_TX_FIFO_FULL   0x20 
    48  
    49 int putPromChar(char c) 
    50 { 
    51         WRITECSR(UART_DR_REG, c); 
    52         while ( (READCSR(UART_FR_REG) & UART_TX_FIFO_FULL) ); 
    53         return 0; 
    54 } 
    55  
    56 /* 
    57  * Ugly prom_printf used for debugging 
    58  */ 
    59  
    60 void prom_printf(char *fmt, ...) 
    61 { 
    62         va_list args; 
    63         int l; 
    64         char *p, *buf_end; 
    65         char buf[1024]; 
    66  
    67         va_start(args, fmt); 
    68         l = vsprintf(buf, fmt, args); /* hopefully i < sizeof(buf) */ 
    69         va_end(args); 
    70  
    71         buf_end = buf + l; 
    72  
    73         for (p = buf; p < buf_end; p++) { 
    74                 /* Crude cr/nl handling is better than none */ 
    75                 if (*p == '\n') 
    76                         putPromChar('\r'); 
    77                 putPromChar(*p); 
    78         } 
    79 } 
    80  
    81 char *prom_getenv(char *envname) 
    82 { 
    83         char **env; 
    84         char *ret; 
    85  
    86         ret = NULL; 
    87  
    88         if (prom_envp== NULL) 
    89                 return NULL; 
    90  
    91         for (env = prom_envp; *env != NULL; env++) { 
    92                 if (strcmp(envname, *env++) == 0) { 
    93                         ret = *env; 
     35#include <asm/mach-adm5120/adm5120_defs.h> 
     36#include <asm/mach-adm5120/adm5120_uart.h> 
     37 
     38#include <prom/cfe.h> 
     39#include <prom/generic.h> 
     40#include <prom/routerboot.h> 
     41#include <prom/myloader.h> 
     42#include <prom/zynos.h> 
     43 
     44unsigned int adm5120_prom_type  = ADM5120_PROM_GENERIC; 
     45 
     46struct board_desc { 
     47        unsigned long   mach_type; 
     48        char            *name; 
     49}; 
     50 
     51#define DEFBOARD(n, mt) { .mach_type = (mt), .name = (n)} 
     52static struct board_desc common_boards[] __initdata = { 
     53        /* Cellvision/SparkLAN boards */ 
     54        DEFBOARD("CAS-630",             MACH_ADM5120_CAS630), 
     55        DEFBOARD("CAS-670",             MACH_ADM5120_CAS670), 
     56        DEFBOARD("CAS-771",             MACH_ADM5120_CAS771), 
     57        DEFBOARD("CAS-790",             MACH_ADM5120_CAS790), 
     58        DEFBOARD("CAS-861",             MACH_ADM5120_CAS861), 
     59        /* Compex boards */ 
     60        DEFBOARD("WP54G-WRT",           MACH_ADM5120_WP54G_WRT), 
     61        /* Edimax boards */ 
     62        DEFBOARD("BR-6104K",            MACH_ADM5120_BR6104K), 
     63        DEFBOARD("BR-6104KP",           MACH_ADM5120_BR6104K), 
     64        /* Infineon boards */ 
     65        DEFBOARD("EASY 5120",           MACH_ADM5120_EASY5120), 
     66        DEFBOARD("EASY 5120-RT",        MACH_ADM5120_EASY5120RT), 
     67        DEFBOARD("EASY 5120P-ATA",      MACH_ADM5120_EASY5120PATA), 
     68        DEFBOARD("EASY 83000",          MACH_ADM5120_EASY83000), 
     69        /* Mikrotik RouterBOARDs */ 
     70        DEFBOARD("111",                 MACH_ADM5120_RB_111), 
     71        DEFBOARD("112",                 MACH_ADM5120_RB_112), 
     72        DEFBOARD("133",                 MACH_ADM5120_RB_133), 
     73        DEFBOARD("133C",                MACH_ADM5120_RB_133C), 
     74        DEFBOARD("miniROUTER",          MACH_ADM5120_RB_150), 
     75        DEFBOARD("153",                 MACH_ADM5120_RB_153), 
     76}; 
     77 
     78static unsigned long __init find_machtype_byname(char *name) 
     79{ 
     80        unsigned long ret; 
     81        int i; 
     82 
     83        ret = MACH_ADM5120_GENERIC; 
     84        if (name == NULL) 
     85                goto out; 
     86 
     87        if (*name == '\0') 
     88                goto out; 
     89 
     90        for (i=0; i<ARRAY_SIZE(common_boards); i++) { 
     91                if (strcmp(common_boards[i].name, name) == 0) { 
     92                        ret = common_boards[i].mach_type; 
    9493                        break; 
    9594                } 
    9695        } 
    9796 
     97out: 
    9898        return ret; 
    9999} 
    100100 
     101static unsigned long __init detect_machtype_routerboot(void) 
     102{ 
     103        char *name; 
     104 
     105        name = routerboot_get_boardname(); 
     106        return find_machtype_byname(name); 
     107} 
     108 
     109static unsigned long __init detect_machtype_generic(void) 
     110{ 
     111        char *name; 
     112 
     113        name = generic_prom_getenv("board"); 
     114        return find_machtype_byname(name); 
     115} 
     116 
     117unsigned long __init detect_machtype_cfe(void) 
     118{ 
     119        char *name; 
     120 
     121        name = cfe_getenv("BOARD_NAME"); 
     122        return find_machtype_byname(name); 
     123} 
     124 
     125static struct { 
     126        unsigned long   mach_type; 
     127        u16             vendor_id; 
     128        u16             board_id; 
     129} zynos_boards[] __initdata = { 
     130#define ZYNOS_BOARD(vi, bi, mt) { .vendor_id = (vi), .board_id = (bi), \ 
     131                .mach_type = (mt) } 
     132 
     133#define ZYXEL_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_ZYXEL, bi, mt) 
     134#define DLINK_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_DLINK, bi, mt) 
     135#define LUCENT_BOARD(bi, mt) ZYNOS_BOARD(ZYNOS_VENDOR_ID_LUCENT, bi, mt) 
     136        ZYXEL_BOARD(ZYNOS_BOARD_HS100,  MACH_ADM5120_HS100), 
     137        ZYXEL_BOARD(ZYNOS_BOARD_P334,   MACH_ADM5120_P334), 
     138        ZYXEL_BOARD(ZYNOS_BOARD_P334U,  MACH_ADM5120_P334U), 
     139        ZYXEL_BOARD(ZYNOS_BOARD_P334W,  MACH_ADM5120_P334W), 
     140        ZYXEL_BOARD(ZYNOS_BOARD_P334WH, MACH_ADM5120_P334WH), 
     141        ZYXEL_BOARD(ZYNOS_BOARD_P334WHD, MACH_ADM5120_P334WHD), 
     142        ZYXEL_BOARD(ZYNOS_BOARD_P334WT, MACH_ADM5120_P334WT), 
     143        ZYXEL_BOARD(ZYNOS_BOARD_P335,   MACH_ADM5120_P335), 
     144        ZYXEL_BOARD(ZYNOS_BOARD_P335PLUS, MACH_ADM5120_P335PLUS), 
     145        ZYXEL_BOARD(ZYNOS_BOARD_P335U,  MACH_ADM5120_P335U) 
     146}; 
     147 
     148static unsigned long __init detect_machtype_bootbase(void) 
     149{ 
     150        unsigned long ret; 
     151        int i; 
     152 
     153        ret = MACH_ADM5120_GENERIC; 
     154        for (i=0; i<ARRAY_SIZE(zynos_boards); i++) { 
     155                if (zynos_boards[i].vendor_id == bootbase_info.vendor_id && 
     156                        zynos_boards[i].board_id == bootbase_info.board_id) { 
     157                        ret = zynos_boards[i].mach_type; 
     158                        break; 
     159                } 
     160        } 
     161 
     162        return ret; 
     163} 
     164 
     165static struct { 
     166        unsigned long   mach_type; 
     167        u16     vid; 
     168        u16     did; 
     169        u16     svid; 
     170        u16     sdid; 
     171} mylo_boards[]  __initdata = { 
     172#define MYLO_BOARD(v,d,sv,sd,mt) { .vid = (v), .did = (d), .svid = (sv), \ 
     173        .sdid = (sd), .mach_type = (mt) } 
     174#define COMPEX_BOARD(d,mt) MYLO_BOARD(VENID_COMPEX,(d),VENID_COMPEX,(d),(mt)) 
     175 
     176        COMPEX_BOARD(DEVID_COMPEX_NP27G, MACH_ADM5120_NP27G), 
     177        COMPEX_BOARD(DEVID_COMPEX_NP28G, MACH_ADM5120_NP28G), 
     178        COMPEX_BOARD(DEVID_COMPEX_NP28GHS, MACH_ADM5120_NP28GHS), 
     179        COMPEX_BOARD(DEVID_COMPEX_WP54G, MACH_ADM5120_WP54G), 
     180        COMPEX_BOARD(DEVID_COMPEX_WP54Gv1C, MACH_ADM5120_WP54Gv1C), 
     181        COMPEX_BOARD(DEVID_COMPEX_WP54AG, MACH_ADM5120_WP54AG), 
     182        COMPEX_BOARD(DEVID_COMPEX_WPP54G, MACH_ADM5120_WPP54G), 
     183        COMPEX_BOARD(DEVID_COMPEX_WPP54AG, MACH_ADM5120_WPP54AG), 
     184}; 
     185 
     186static unsigned long __init detect_machtype_myloader(void) 
     187{ 
     188        unsigned long ret; 
     189        int i; 
     190 
     191        ret = MACH_ADM5120_GENERIC; 
     192        for (i=0; i<ARRAY_SIZE(mylo_boards); i++) { 
     193                if (mylo_boards[i].vid == myloader_info.vid && 
     194                        mylo_boards[i].did == myloader_info.did && 
     195                        mylo_boards[i].svid == myloader_info.svid && 
     196                        mylo_boards[i].sdid == myloader_info.sdid) { 
     197                        ret = mylo_boards[i].mach_type; 
     198                        break; 
     199                } 
     200        } 
     201 
     202        return ret; 
     203} 
     204 
     205static void __init prom_detect_machtype(void) 
     206{ 
     207        if (bootbase_present()) { 
     208                adm5120_prom_type = ADM5120_PROM_BOOTBASE; 
     209                mips_machtype = detect_machtype_bootbase(); 
     210                return; 
     211        } 
     212 
     213        if (cfe_present()) { 
     214                adm5120_prom_type = ADM5120_PROM_CFE; 
     215                mips_machtype = detect_machtype_cfe(); 
     216                return; 
     217        } 
     218 
     219        if (myloader_present()) { 
     220                adm5120_prom_type = ADM5120_PROM_MYLOADER; 
     221                mips_machtype = detect_machtype_myloader(); 
     222                return; 
     223        } 
     224 
     225        if (routerboot_present()) { 
     226                adm5120_prom_type = ADM5120_PROM_ROUTERBOOT; 
     227                mips_machtype = detect_machtype_routerboot(); 
     228                return; 
     229        } 
     230 
     231        adm5120_prom_type = ADM5120_PROM_GENERIC; 
     232        mips_machtype = detect_machtype_generic(); 
     233} 
     234 
     235/* TODO: this is an ugly hack for RouterBOARDS */ 
    101236extern char _image_cmdline; 
    102 /* 
    103  * initialize the prom module. 
    104  */ 
    105 void __init prom_init(void) 
     237static void __init prom_init_cmdline(void) 
    106238{ 
    107239        char *cmd; 
    108  
    109         if ((fw_arg2 & 3) == 0) { 
    110                 prom_envp = (char **)fw_arg2; 
    111         } 
    112  
    113         adm5120_info_init(); 
    114  
    115         /* you should these macros defined in include/asm/bootinfo.h */ 
    116         mips_machgroup = MACH_GROUP_ADM5120; 
    117         mips_machtype = adm5120_board.mach_type; 
    118240 
    119241        /* init command line, register a default kernel command line */ 
     
    122244                else strcpy(&(arcs_cmdline[0]), CONFIG_CMDLINE); 
    123245 
    124         /* init memory map */ 
    125         prom_meminit(); 
    126 } 
     246} 
     247 
     248#define UART_READ(r) *(volatile u32 *)(KSEG1ADDR(ADM5120_UART0_BASE)+(r)) 
     249#define UART_WRITE(r,v) *(volatile u32 *)(KSEG1ADDR(ADM5120_UART0_BASE)+(r))=(v) 
     250 
     251void __init prom_putchar(char ch) 
     252{ 
     253        while ((UART_READ(UART_REG_FLAG) & UART_FLAG_TXFE) == 0); 
     254        UART_WRITE(UART_REG_DATA, ch); 
     255        while ((UART_READ(UART_REG_FLAG) & UART_FLAG_TXFE) == 0); 
     256} 
     257 
     258void __init prom_init(void) 
     259{ 
     260        mips_machgroup = MACH_GROUP_ADM5120; 
     261        prom_detect_machtype(); 
     262 
     263        prom_init_cmdline(); 
     264} 
     265 
     266void __init prom_free_prom_memory(void) 
     267{ 
     268        /* We do not have to prom memory to free */ 
     269} 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/adm5120/setup.c

    r7673 r7916  
    11/* 
    2  *      Copyright (C) ADMtek Incorporated. 
    3  *              Creator : daniell@admtek.com.tw 
    4  *      Copyright 1999, 2000 MIPS Technologies, Inc. 
    5  *      Copyright Jeroen Vreeken (pe1rxq@amsat.org), 2005 
    6  *      Copyright (C) 2007 OpenWrt.org 
     2 *  $Id$ 
     3 * 
     4 *  ADM5120 specific setup 
     5 * 
     6 *  Copyright (C) ADMtek Incorporated. 
     7 *  Copyright (C) 2005 Jeroen Vreeken (pe1rxq@amsat.org) 
     8 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
     9 *  Copyright (C) 2007 OpenWrt.org 
     10 * 
     11 *  This program is free software; you can redistribute it and/or 
     12 *  modify it under the terms of the GNU General Public License 
     13 *  as published by the Free Software Foundation; either version 2 
     14 *  of the License, or (at your option) any later version. 
     15 * 
     16 *  This program is distributed in the hope that it will be useful, 
     17 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     18 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     19 *  GNU General Public License for more details. 
     20 * 
     21 *  You should have received a copy of the GNU General Public License 
     22 *  along with this program; if not, write to the 
     23 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     24 *  Boston, MA  02110-1301, USA. 
     25 * 
    726 */ 
    827 
    9 #include <linux/autoconf.h> 
    1028#include <linux/init.h> 
    11 #include <linux/device.h> 
    12 #include <linux/platform_device.h> 
     29#include <linux/kernel.h> 
    1330 
    1431#include <asm/reboot.h> 
     
    1835#include <asm/mach-adm5120/adm5120_info.h> 
    1936#include <asm/mach-adm5120/adm5120_defs.h> 
    20 #include <asm/mach-adm5120/adm5120_irq.h> 
     37#include <asm/mach-adm5120/adm5120_switch.h> 
     38#include <asm/mach-adm5120/adm5120_board.h> 
    2139 
    22 extern void adm5120_time_init(void) __init; 
     40static char *prom_names[ADM5120_PROM_LAST+1] __initdata = { 
     41        [ADM5120_PROM_GENERIC]          = "Generic", 
     42        [ADM5120_PROM_CFE]              = "CFE", 
     43        [ADM5120_PROM_UBOOT]            = "U-Boot", 
     44        [ADM5120_PROM_MYLOADER]         = "MyLoader", 
     45        [ADM5120_PROM_ROUTERBOOT]       = "RouterBOOT", 
     46        [ADM5120_PROM_BOOTBASE]         = "Bootbase" 
     47}; 
    2348 
    24 #define ADM5120_SOFTRESET       0x12000004 
    25  
    26 void adm5120_restart(char *command) 
     49static void __init adm5120_report(void) 
    2750{ 
    28         *(u32*)KSEG1ADDR(ADM5120_SOFTRESET)=1; 
    29 } 
    30  
    31  
    32 void adm5120_halt(void) 
    33 { 
    34         printk(KERN_NOTICE "\n** You can safely turn off the power\n"); 
    35         while (1); 
    36 } 
    37  
    38  
    39 void adm5120_power_off(void) 
    40 { 
    41         adm5120_halt(); 
     51        printk(KERN_INFO "SoC      : ADM%04X%s revision %d, running at %ldMHz\n", 
     52                adm5120_product_code, 
     53                (adm5120_package == ADM5120_PACKAGE_BGA) ? "" : "P", 
     54                adm5120_revision, (adm5120_speed / 1000000) 
     55                ); 
     56        printk(KERN_INFO "Bootdev  : %s flash\n", adm5120_nand_boot ? "NAND":"NOR"); 
     57        printk(KERN_INFO "Prom     : %s\n", prom_names[adm5120_prom_type]); 
    4258} 
    4359 
    4460void __init plat_mem_setup(void) 
    4561{ 
    46         printk(KERN_INFO "ADM5120 board setup\n"); 
     62        adm5120_soc_init(); 
     63        adm5120_mem_init(); 
     64        adm5120_report(); 
    4765 
    4866        board_time_init = adm5120_time_init; 
     
    5472        set_io_port_base(KSEG1); 
    5573} 
    56  
    57 const char *get_system_type(void) 
    58 { 
    59         return adm5120_board_name(); 
    60 } 
    61  
    62 static struct resource adm5120_hcd_resources[] = { 
    63         [0] = { 
    64                 .start  = ADM5120_USBC_BASE, 
    65                 .end    = ADM5120_USBC_BASE+ADM5120_USBC_SIZE-1, 
    66                 .flags  = IORESOURCE_MEM, 
    67         }, 
    68         [1] = { 
    69                 .start  = ADM5120_IRQ_USBC, 
    70                 .end    = ADM5120_IRQ_USBC, 
    71                 .flags  = IORESOURCE_IRQ, 
    72         }, 
    73 }; 
    74  
    75 static struct platform_device adm5120hcd_device = { 
    76         .name           = "adm5120-hcd", 
    77         .id             = -1, 
    78         .num_resources  = ARRAY_SIZE(adm5120_hcd_resources), 
    79         .resource       = adm5120_hcd_resources, 
    80 }; 
    81  
    82 static struct platform_device *devices[] __initdata = { 
    83         &adm5120hcd_device, 
    84 }; 
    85  
    86 static int __init adm5120_init(void) 
    87 { 
    88         return platform_add_devices(devices, ARRAY_SIZE(devices)); 
    89 } 
    90  
    91 subsys_initcall(adm5120_init); 
  • trunk/target/linux/adm5120-2.6/files/arch/mips/pci/fixup-adm5120.c

    r7758 r7916  
    2626 */ 
    2727 
    28 #include <linux/autoconf.h> 
    2928#include <linux/types.h> 
    3029#include <linux/kernel.h> 
     
    126125        case MACH_ADM5120_WPP54G: 
    127126        default: 
    128                 printk(KERN_ALERT "PCI: irq map is unknown for %s, using " 
    129                         "defaults.\n",  adm5120_board_name()); 
     127                printk(KERN_ALERT "PCI: irq map is unknown, using defaults.\n"); 
    130128                break; 
    131129        } 
  • trunk/target/linux/adm5120-2.6/files/drivers/leds/leds-adm5120.c

    r7744 r7916  
    164164}; 
    165165 
    166 LED_ARRAY(unknown) { 
     166LED_ARRAY(generic) { 
    167167#if defined(CONFIG_LEDS_ADM5120_DIAG) 
    168168        LED_STD(ADM5120_GPIO_PIN0, "gpio0",     NULL ), 
     
    199199 
    200200static struct mach_data machines[] __initdata = { 
    201         MACH_DATA(MACH_ADM5120_UNKNOWN, unknown), 
     201        MACH_DATA(MACH_ADM5120_GENERIC, generic), 
    202202        MACH_DATA(MACH_ADM5120_P334WT,  p334wt), 
    203203        MACH_DATA(MACH_ADM5120_WP54AG,  wp54g), 
  • trunk/target/linux/adm5120-2.6/files/drivers/mtd/myloader.c

    r7673 r7916  
    11/* 
     2 *  $Id$ 
     3 * 
    24 *  Parse MyLoader-style flash partition tables and produce a Linux partition 
    35 *  array to match. 
     
    3436 
    3537#include <linux/byteorder/generic.h> 
    36 #include <asm/mach-adm5120/myloader.h> 
     38 
     39#include <prom/myloader.h> 
    3740 
    3841#define NAME_LEN_MAX            20 
     
    6972        /* Partition Table is always located on the second erase block */ 
    7073        offset = blocklen; 
    71         printk(KERN_NOTICE "Searching for MyLoader partition table " 
    72                         "in %s at offset 0x%lx\n", master->name, offset); 
     74        printk(KERN_NOTICE "%s: searching for MyLoader partition table at " 
     75                        "offset 0x%lx\n", master->name, offset); 
    7376 
    74         ret = master->read(master, offset, sizeof(*tab), &retlen, 
    75                         (void *)tab); 
    76  
     77        ret = master->read(master, offset, sizeof(*tab), &retlen, (void *)tab); 
    7778        if (ret) 
    7879                goto out; 
     
    8586        /* Check for Partition Table magic number */ 
    8687        if (tab->magic != le32_to_cpu(MYLO_MAGIC_PARTITIONS)) { 
    87                 printk(KERN_NOTICE "No MyLoader partition table detected " 
    88                         "in %s\n", master->name); 
     88                printk(KERN_NOTICE "%s: no MyLoader partition table found\n", 
     89                        master->name); 
    8990                ret = 0; 
    9091                goto out_free_buf; 
     
    104105        } 
    105106 
    106  
    107107        mtd_parts = kzalloc((num_parts*sizeof(*mtd_part) + num_parts*NAME_LEN_MAX), 
    108108                         GFP_KERNEL); 
     
    120120        mtd_part->offset = 0; 
    121121        mtd_part->size = blocklen; 
     122        mtd_part->mask_flags = MTD_WRITEABLE; 
    122123        mtd_part++; 
    123124        names += NAME_LEN_MAX; 
     
    127128        mtd_part->offset = blocklen; 
    128129        mtd_part->size = blocklen; 
     130        mtd_part->mask_flags = MTD_WRITEABLE; 
    129131        mtd_part++; 
    130132        names += NAME_LEN_MAX; 
     
    137139 
    138140                sprintf(names, "partition%d", i); 
    139                 mtd_part->name = names; 
    140141                mtd_part->offset = le32_to_cpu(part->addr); 
    141142                mtd_part->size = le32_to_cpu(part->size); 
     143                mtd_part->name = names; 
    142144                mtd_part++; 
    143145                names += NAME_LEN_MAX; 
  • trunk/target/linux/adm5120-2.6/files/drivers/net/adm5120sw.c

    r7673 r7916  
    4141}; 
    4242 
    43 /* default settings - unlimited TX and RX on all ports, default shaper mode */  
     43/* default settings - unlimited TX and RX on all ports, default shaper mode */ 
    4444static unsigned char bw_matrix[SW_DEVS] = { 
    45         0, 0, 0, 0, 0, 0         
     45        0, 0, 0, 0, 0, 0 
    4646}; 
    4747 
     
    374374                case SIOCGETBW: 
    375375                        err = copy_to_user(rq->ifr_data, bw_matrix, sizeof(bw_matrix)); 
    376                         if (err)  
    377                                 return -EFAULT;  
    378                         break;  
     376                        if (err) 
     377                                return -EFAULT; 
     378                        break; 
    379379                case SIOCSETBW: 
    380                         if (!capable(CAP_NET_ADMIN))  
     380                        if (!capable(CAP_NET_ADMIN)) 
    381381                                return -EPERM; 
    382382                        err = copy_from_user(bw_matrix, rq->ifr_data, sizeof(bw_matrix)); 
    383                         if (err)  
     383                        if (err) 
    384384                                return -EFAULT; 
    385385                        adm5120_set_bw(bw_matrix); 
    386                         break;  
     386                        break; 
    387387                default: 
    388388                        return -EOPNOTSUPP; 
     
    429429                goto out; 
    430430 
    431         adm5120_nrdevs = adm5120_board.iface_num; 
    432         if (adm5120_nrdevs > 5 && !adm5120_has_gmii()) 
    433                 adm5120_nrdevs = 5; 
     431        adm5120_nrdevs = adm5120_eth_num_ports; 
    434432 
    435433        adm5120_set_reg(ADM5120_CPUP_CONF, 
     
    484482                dev->watchdog_timeo = ETH_TX_TIMEOUT; 
    485483                dev->set_mac_address = adm5120_sw_set_mac_address; 
    486                 /* HACK alert!!!  In the original admtek driver it is asumed 
    487                    that you can read the MAC addressess from flash, but edimax 
    488                    decided to leave that space intentionally blank... 
    489                  */ 
    490                 memcpy(dev->dev_addr, "\x00\x50\xfc\x11\x22\x01", 6); 
    491                 dev->dev_addr[5] += i; 
     484 
     485                memcpy(dev->dev_addr, adm5120_eth_macs[i], 6); 
    492486                adm5120_write_mac(dev); 
    493487 
  • trunk/target/linux/adm5120-2.6/files/drivers/usb/host/adm5120-hcd.c

    r7673 r7916  
    1919#include <linux/platform_device.h> 
    2020 
     21#include <asm/bootinfo.h> 
    2122#include <asm/io.h> 
    2223#include <asm/irq.h> 
     
    752753                goto out_mem; 
    753754        } 
    754          
     755 
    755756        hcd = usb_create_hcd(&adm5120_hc_driver, &pdev->dev, pdev->dev.bus_id); 
    756757        if (!hcd) 
     
    822823        .remove =       adm5120hcd_remove, 
    823824        .driver =       { 
    824                 .name   = "adm5120-hcd", 
     825                .name   = "adm5120-usbc", 
    825826                .owner  = THIS_MODULE, 
    826827        }, 
     
    829830static int __init adm5120hcd_init(void) 
    830831{ 
    831         if (usb_disabled())  
     832        int ret; 
     833 
     834        if (usb_disabled()) { 
     835                printk(KERN_DEBUG PFX "USB support is disabled\n"); 
    832836                return -ENODEV; 
    833         if (!adm5120_board.has_usb) { 
    834                 printk(KERN_DEBUG PFX "this board does not have USB\n"); 
     837        } 
     838 
     839        if (mips_machgroup != MACH_GROUP_ADM5120) { 
     840                printk(KERN_DEBUG PFX "unsupported machine group\n"); 
    835841                return -ENODEV; 
    836842        } 
    837843 
    838         printk(KERN_INFO PFX "registered\n"); 
    839         return platform_driver_register(&adm5120hcd_driver); 
     844        ret = platform_driver_register(&adm5120hcd_driver); 
     845        if (ret == 0) 
     846                printk(KERN_INFO PFX "registered\n"); 
     847 
     848        return ret; 
    840849} 
    841850 
  • trunk/target/linux/adm5120-2.6/files/include/asm-mips/mach-adm5120/adm5120_info.h

    r7819 r7916  
    11/* 
    2  * $Id$ 
     2 *  $Id$ 
    33 * 
    4  * Copyright (C) 2007 OpenWrt.org 
    5  * Copyright (C) Gabor Juhos <juhosg@freemail.hu> 
     4 *  Copyright (C) 2007 OpenWrt.org 
     5 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
    66 * 
    7  * This program is free software; you can redistribute  it and/or modify it 
    8  * under  the terms of  the GNU General  Public License as published by the 
    9  * Free Software Foundation;  either version 2 of the  License, or (at your 
    10  * option) any later version. 
     7 *  This program is free software; you can redistribute it and/or 
     8 *  modify it under the terms of the GNU General Public License 
     9 *  as published by the Free Software Foundation; either version 2 
     10 *  of the License, or (at your option) any later version. 
     11 * 
     12 *  This program is distributed in the hope that it will be useful, 
     13 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     14 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     15 *  GNU General Public License for more details. 
     16 * 
     17 *  You should have received a copy of the GNU General Public License 
     18 *  along with this program; if not, write to the 
     19 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     20 *  Boston, MA  02110-1301, USA. 
    1121 */ 
    1222 
     
    1626#include <linux/types.h> 
    1727 
    18 #define ADM5120_BOARD_NAMELEN   64 
    19  
    20 struct adm5120_board { 
    21         char            name[ADM5120_BOARD_NAMELEN]; 
    22         unsigned long   mach_type; 
    23         unsigned int    iface_num;      /* Number of Ethernet interfaces */ 
    24         unsigned int    has_usb;        /* USB controller presence flag */ 
    25         u32             mem_size;       /* onboard memory size */ 
    26         u32             flash0_size;    /* Flash 0 size */ 
    27 }; 
    28  
    29 extern struct adm5120_board adm5120_board; 
    30  
    31 extern unsigned int adm5120_boot_loader; 
    32 #define BOOT_LOADER_UNKNOWN     0 
    33 #define BOOT_LOADER_CFE         1 
    34 #define BOOT_LOADER_UBOOT       2 
    35 #define BOOT_LOADER_MYLOADER    3 
    36 #define BOOT_LOADER_ROUTERBOOT  4 
    37 #define BOOT_LOADER_BOOTBASE    5 
    38 #define BOOT_LOADER_LAST        5 
     28extern unsigned int adm5120_prom_type; 
     29#define ADM5120_PROM_GENERIC    0 
     30#define ADM5120_PROM_CFE        1 
     31#define ADM5120_PROM_MYLOADER   2 
     32#define ADM5120_PROM_ROUTERBOOT 3 
     33#define ADM5120_PROM_BOOTBASE   4 
     34#define ADM5120_PROM_UBOOT      5 
     35#define ADM5120_PROM_LAST       5 
    3936 
    4037extern unsigned int adm5120_product_code; 
     
    5451extern unsigned long adm5120_memsize; 
    5552 
    56 extern void adm5120_info_init(void); 
     53/* 
     54 * TODO:remove adm5120_eth* variables when the switch driver will be 
     55 *      converted into a real platform driver 
     56 */ 
     57extern unsigned int adm5120_eth_num_ports; 
     58extern unsigned char adm5120_eth_macs[6][6]; 
     59 
     60extern void adm5120_mem_init(void) __init; 
     61extern void adm5120_time_init(void) __init; 
     62extern void adm5120_ndelay(u32 ns); 
     63 
     64extern void adm5120_restart(char *command); 
     65extern void adm5120_halt(void); 
     66extern void adm5120_power_off(void); 
     67 
     68extern void (*adm5120_board_reset)(void); 
    5769 
    5870static inline int adm5120_package_pqfp(void) 
     
    7688} 
    7789 
    78 static inline char *adm5120_board_name(void) 
    79 { 
    80         return adm5120_board.name; 
    81 } 
    82  
    83 static inline u32 adm5120_board_memsize(void) 
    84 { 
    85         return adm5120_board.mem_size; 
    86 } 
    87  
    8890#endif /* _ADM5120_INFO_H */ 
  • trunk/target/linux/adm5120-2.6/files/include/asm-mips/mach-adm5120/adm5120_intc.h

    r7673 r7916  
    11/* 
     2 *  $Id$ 
     3 * 
    24 *  ADM5120 interrupt controller definitions 
    35 * 
     
    2325 *  Boston, MA  02110-1301, USA. 
    2426 */ 
     27 
    2528#ifndef _ADM5120_INTC_H_ 
    2629#define _ADM5120_INTC_H_ 
  • trunk/target/linux/adm5120-2.6/files/include/asm-mips/mach-adm5120/prom/myloader.h

    r7902 r7916  
    11/* 
    2  *  Copyright (C) 2006,2007 Gabor Juhos 
     2 *  $Id$ 
    33 * 
    4  *  This program is free software; you can redistribute  it and/or modify it 
    5  *  under  the terms of  the GNU General  Public License as published by the 
    6  *  Free Software Foundation;  either version 2 of the  License, or (at your 
    7  *  option) any later version. 
     4 *  Compex's MyLoader specific definitions 
    85 * 
     6 *  Copyright (C) 2006,2007 Gabor Juhos <juhosg@freemail.hu> 
     7 *  Copyright (C) 2007 OpenWrt.org 
     8 * 
     9 *  This program is free software; you can redistribute it and/or 
     10 *  modify it under the terms of the GNU General Public License 
     11 *  as published by the Free Software Foundation; either version 2 
     12 *  of the License, or (at your option) any later version. 
     13 * 
     14 *  This program is distributed in the hope that it will be useful, 
     15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17 *  GNU General Public License for more details. 
     18 * 
     19 *  You should have received a copy of the GNU General Public License 
     20 *  along with this program; if not, write to the 
     21 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     22 *  Boston, MA  02110-1301, USA. 
    923 */ 
    1024 
     
    165179}; 
    166180 
     181struct myloader_info { 
     182        u32     vid; 
     183        u32     did; 
     184        u32     svid; 
     185        u32     sdid; 
     186}; 
     187 
     188extern struct myloader_info myloader_info; 
     189extern int myloader_present(void) __init; 
     190 
    167191#endif /* _MYLOADER_H_*/ 
  • trunk/target/linux/adm5120-2.6/files/include/asm-mips/mach-adm5120/prom/routerboot.h

    r7902 r7916  
    11/* 
    22 *  $Id$ 
     3 * 
     4 *  Mikrotik's RouterBOOT definitions 
    35 * 
    46 *  Copyright (C) 2007 OpenWrt.org 
    57 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
    68 * 
    7  *  This program is free software; you can redistribute  it and/or modify it 
    8  *  under  the terms of  the GNU General  Public License as published by the 
    9  *  Free Software Foundation;  either version 2 of the  License, or (at your 
    10  *  option) any later version. 
     9 *  This program is free software; you can redistribute it and/or 
     10 *  modify it under the terms of the GNU General Public License 
     11 *  as published by the Free Software Foundation; either version 2 
     12 *  of the License, or (at your option) any later version. 
    1113 * 
     14 *  This program is distributed in the hope that it will be useful, 
     15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17 *  GNU General Public License for more details. 
     18 * 
     19 *  You should have received a copy of the GNU General Public License 
     20 *  along with this program; if not, write to the 
     21 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     22 *  Boston, MA  02110-1301, USA. 
    1223 */ 
    1324 
     
    121132#define RB_BOOT_PROTOCOL_DHCP   1 
    122133 
     134extern int routerboot_present(void) __init; 
     135extern char *routerboot_get_boardname(void); 
     136 
    123137#endif /* _ROUTERBOOT_H */ 
  • trunk/target/linux/adm5120-2.6/files/include/asm-mips/mach-adm5120/prom/zynos.h

    r7902 r7916  
    11/* 
    22 *  $Id$ 
     3 * 
     4 *  ZyNOS (ZyXEL's Networking OS) definitions 
    35 * 
    46 *  Copyright (C) 2007 OpenWrt.org 
    57 *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu> 
    68 * 
    7  *  This program is free software; you can redistribute  it and/or modify it 
    8  *  under  the terms of  the GNU General  Public License as published by the 
    9  *  Free Software Foundation;  either version 2 of the  License, or (at your 
    10  *  option) any later version. 
     9 *  This program is free software; you can redistribute it and/or 
     10 *  modify it under the terms of the GNU General Public License 
     11 *  as published by the Free Software Foundation; either version 2 
     12 *  of the License, or (at your option) any later version. 
    1113 * 
     14 *  This program is distributed in the hope that it will be useful, 
     15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17 *  GNU General Public License for more details. 
     18 * 
     19 *  You should have received a copy of the GNU General Public License 
     20 *  along with this program; if not, write to the 
     21 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
     22 *  Boston, MA  02110-1301, USA. 
    1223 */ 
    1324 
     
    7687#define ZYNOS_MAGIC_DBGAREA2    0x61726561      /* "area" */ 
    7788 
     89struct bootbase_info { 
     90        u16             vendor_id; 
     91        u16             board_id; 
     92        u8              mac[6]; 
     93}; 
     94 
     95extern struct bootbase_info bootbase_info; 
     96extern int bootbase_present(void) __init; 
     97 
    7898#endif /* _ZYNOS_H */ 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/001-adm5120.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/arch/mips/Kconfig 
     1Index: linux-2.6.22/arch/mips/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/arch/mips/Kconfig 
    4 +++ linux-2.6.22-rc6/arch/mips/Kconfig 
    5 @@ -15,6 +15,17 @@ choice 
     3--- linux-2.6.22.orig/arch/mips/Kconfig 
     4+++ linux-2.6.22/arch/mips/Kconfig 
     5@@ -15,6 +15,18 @@ choice 
    66        prompt "System type" 
    77        default SGI_IP22 
     
    1010+       bool "Support for ADM5120 SoC" 
    1111+       select SYS_HAS_CPU_MIPS32_R1 
     12+       select SYS_HAS_EARLY_PRINTK 
    1213+       select DMA_NONCOHERENT 
    1314+       select HW_HAS_PCI 
     
    2122        bool "Alchemy processor based machines" 
    2223  
    23 @@ -658,6 +669,7 @@ config TOSHIBA_RBTX4938 
     24@@ -658,6 +670,7 @@ config TOSHIBA_RBTX4938 
    2425  
    2526 endchoice 
     
    2930 source "arch/mips/ddb5xxx/Kconfig" 
    3031 source "arch/mips/gt64120/ev64120/Kconfig" 
    31 Index: linux-2.6.22-rc6/arch/mips/Makefile 
     32Index: linux-2.6.22/arch/mips/Makefile 
    3233=================================================================== 
    33 --- linux-2.6.22-rc6.orig/arch/mips/Makefile 
    34 +++ linux-2.6.22-rc6/arch/mips/Makefile 
    35 @@ -165,6 +165,14 @@ cflags-$(CONFIG_MACH_JAZZ) += -Iinclude/ 
     34--- linux-2.6.22.orig/arch/mips/Makefile 
     35+++ linux-2.6.22/arch/mips/Makefile 
     36@@ -165,6 +165,16 @@ cflags-$(CONFIG_MACH_JAZZ) += -Iinclude/ 
    3637 load-$(CONFIG_MACH_JAZZ)       += 0xffffffff80080000 
    3738  
     
    4041+# 
    4142+ 
     43+libs-$(CONFIG_MIPS_ADM5120)    += arch/mips/adm5120/prom/ 
    4244+core-$(CONFIG_MIPS_ADM5120)    += arch/mips/adm5120/ 
     45+core-$(CONFIG_MIPS_ADM5120)    += arch/mips/adm5120/boards/ 
    4346+cflags-$(CONFIG_MIPS_ADM5120)  += -Iinclude/asm-mips/mach-adm5120 
    4447+load-$(CONFIG_MIPS_ADM5120)    += 0xffffffff80001000 
     
    4851 # 
    4952 core-$(CONFIG_SOC_AU1X00)      += arch/mips/au1000/common/ 
    50 Index: linux-2.6.22-rc6/include/asm-mips/bootinfo.h 
     53Index: linux-2.6.22/include/asm-mips/bootinfo.h 
    5154=================================================================== 
    52 --- linux-2.6.22-rc6.orig/include/asm-mips/bootinfo.h 
    53 +++ linux-2.6.22-rc6/include/asm-mips/bootinfo.h 
     55--- linux-2.6.22.orig/include/asm-mips/bootinfo.h 
     56+++ linux-2.6.22/include/asm-mips/bootinfo.h 
    5457@@ -213,6 +213,57 @@ 
    5558 #define MACH_GROUP_NEC_EMMA2RH 25      /* NEC EMMA2RH (was 23)         */ 
     
    6063+ */ 
    6164+#define MACH_GROUP_ADM5120     26 
    62 +#define MACH_ADM5120_UNKNOWN   0       /* Unknown board */ 
     65+#define MACH_ADM5120_GENERIC   0       /* Generic board */ 
    6366+#define MACH_ADM5120_WP54G_WRT 1       /* Compex WP54G-WRT */ 
    6467+#define MACH_ADM5120_WP54G     2       /* Compex WP54G */ 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/002-adm5120_flash.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/mtd/maps/Kconfig 
     1Index: linux-2.6.22/drivers/mtd/maps/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/mtd/maps/Kconfig 
    4 +++ linux-2.6.22-rc6/drivers/mtd/maps/Kconfig 
    5 @@ -620,5 +620,10 @@ config MTD_PLATRAM 
     3--- linux-2.6.22.orig/drivers/mtd/maps/Kconfig 
     4+++ linux-2.6.22/drivers/mtd/maps/Kconfig 
     5@@ -620,5 +620,9 @@ config MTD_PLATRAM 
    66  
    77          This selection automatically selects the map_ram driver. 
    88  
    99+config MTD_ADM5120 
    10 +       tristate "Map driver for ADMtek ADM5120 boards" 
     10+       tristate "Map driver for ADM5120 based boards" 
    1111+       depends on MIPS_ADM5120 
    12 +       select MTD_CFI_AMDSTD 
    1312+ 
    1413 endmenu 
    1514  
    16 Index: linux-2.6.22-rc6/drivers/mtd/maps/Makefile 
     15Index: linux-2.6.22/drivers/mtd/maps/Makefile 
    1716=================================================================== 
    18 --- linux-2.6.22-rc6.orig/drivers/mtd/maps/Makefile 
    19 +++ linux-2.6.22-rc6/drivers/mtd/maps/Makefile 
     17--- linux-2.6.22.orig/drivers/mtd/maps/Makefile 
     18+++ linux-2.6.22/drivers/mtd/maps/Makefile 
    2019@@ -47,6 +47,7 @@ obj-$(CONFIG_MTD_OCELOT)      += ocelot.o 
    2120 obj-$(CONFIG_MTD_SOLUTIONENGINE)+= solutionengine.o 
    2221 obj-$(CONFIG_MTD_PCI)          += pci.o 
    2322 obj-$(CONFIG_MTD_ALCHEMY)       += alchemy-flash.o 
    24 +obj-$(CONFIG_MTD_ADM5120)              += adm5120_mtd.o 
     23+obj-$(CONFIG_MTD_ADM5120)              += adm5120-flash.o 
    2524 obj-$(CONFIG_MTD_LASAT)                += lasat.o 
    2625 obj-$(CONFIG_MTD_AUTCPU12)     += autcpu12-nvram.o 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/003-adm5120_switch.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/net/Kconfig 
     1Index: linux-2.6.22/drivers/net/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/net/Kconfig 
    4 +++ linux-2.6.22-rc6/drivers/net/Kconfig 
     3--- linux-2.6.22.orig/drivers/net/Kconfig 
     4+++ linux-2.6.22/drivers/net/Kconfig 
    55@@ -574,6 +574,10 @@ config MIPS_AU1X00_ENET 
    66          If you have an Alchemy Semi AU1X00 based system 
     
    1414        tristate "SB1250 Ethernet support" 
    1515        depends on NET_ETHERNET && SIBYTE_SB1xxx_SOC 
    16 Index: linux-2.6.22-rc6/drivers/net/Makefile 
     16Index: linux-2.6.22/drivers/net/Makefile 
    1717=================================================================== 
    18 --- linux-2.6.22-rc6.orig/drivers/net/Makefile 
    19 +++ linux-2.6.22-rc6/drivers/net/Makefile 
     18--- linux-2.6.22.orig/drivers/net/Makefile 
     19+++ linux-2.6.22/drivers/net/Makefile 
    2020@@ -165,6 +165,7 @@ obj-$(CONFIG_SC92031) += sc92031.o 
    2121 # This is also a 82596 and should probably be merged 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/004-adm5120_uart.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/serial/Makefile 
     1Index: linux-2.6.22/drivers/serial/Makefile 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/serial/Makefile 
    4 +++ linux-2.6.22-rc6/drivers/serial/Makefile 
     3--- linux-2.6.22.orig/drivers/serial/Makefile 
     4+++ linux-2.6.22/drivers/serial/Makefile 
    55@@ -21,6 +21,7 @@ obj-$(CONFIG_SERIAL_8250_EXAR_ST16C554)  
    66 obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o 
     
    1111 obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o 
    1212 obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o 
    13 Index: linux-2.6.22-rc6/include/linux/serial_core.h 
     13Index: linux-2.6.22/include/linux/serial_core.h 
    1414=================================================================== 
    15 --- linux-2.6.22-rc6.orig/include/linux/serial_core.h 
    16 +++ linux-2.6.22-rc6/include/linux/serial_core.h 
     15--- linux-2.6.22.orig/include/linux/serial_core.h 
     16+++ linux-2.6.22/include/linux/serial_core.h 
    1717@@ -143,6 +143,9 @@ 
    1818 #define PORT_KS8695    76 
     
    2525  
    2626 #include <linux/compiler.h> 
    27 Index: linux-2.6.22-rc6/drivers/serial/Kconfig 
     27Index: linux-2.6.22/drivers/serial/Kconfig 
    2828=================================================================== 
    29 --- linux-2.6.22-rc6.orig/drivers/serial/Kconfig 
    30 +++ linux-2.6.22-rc6/drivers/serial/Kconfig 
     29--- linux-2.6.22.orig/drivers/serial/Kconfig 
     30+++ linux-2.6.22/drivers/serial/Kconfig 
    3131@@ -270,6 +270,22 @@ config SERIAL_8250_RM9K 
    3232  
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/005-adm5120_usb.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/usb/core/hub.c 
    2 =================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/usb/core/hub.c 
    4 +++ linux-2.6.22-rc6/drivers/usb/core/hub.c 
     1Index: linux-2.6.22/drivers/usb/core/hub.c 
     2=================================================================== 
     3--- linux-2.6.22.orig/drivers/usb/core/hub.c 
     4+++ linux-2.6.22/drivers/usb/core/hub.c 
    55@@ -464,7 +464,7 @@ void usb_hub_tt_clear_buffer (struct usb 
    66                        : (USB_ENDPOINT_XFER_BULK << 11); 
     
    183183        hub_port_logical_disconnect(parent_hub, port1); 
    184184        return -ENODEV; 
    185 Index: linux-2.6.22-rc6/drivers/usb/host/Kconfig 
    186 =================================================================== 
    187 --- linux-2.6.22-rc6.orig/drivers/usb/host/Kconfig 
    188 +++ linux-2.6.22-rc6/drivers/usb/host/Kconfig 
    189 @@ -224,3 +224,6 @@ config USB_SL811_CS 
     185Index: linux-2.6.22/drivers/usb/host/Kconfig 
     186=================================================================== 
     187--- linux-2.6.22.orig/drivers/usb/host/Kconfig 
     188+++ linux-2.6.22/drivers/usb/host/Kconfig 
     189@@ -237,3 +237,6 @@ config USB_SL811_CS 
    190190          To compile this driver as a module, choose M here: the 
    191191          module will be called "sl811_cs". 
     
    194194+       tristate "ADM5120 HCD support" 
    195195+       depends on USB && MIPS_ADM5120 
    196 Index: linux-2.6.22-rc6/drivers/usb/host/Makefile 
    197 =================================================================== 
    198 --- linux-2.6.22-rc6.orig/drivers/usb/host/Makefile 
    199 +++ linux-2.6.22-rc6/drivers/usb/host/Makefile 
     196Index: linux-2.6.22/drivers/usb/host/Makefile 
     197=================================================================== 
     198--- linux-2.6.22.orig/drivers/usb/host/Makefile 
     199+++ linux-2.6.22/drivers/usb/host/Makefile 
    200200@@ -8,6 +8,7 @@ endif 
    201201  
     
    206206 obj-$(CONFIG_USB_ISP116X_HCD)  += isp116x-hcd.o 
    207207 obj-$(CONFIG_USB_OHCI_HCD)     += ohci-hcd.o 
    208 Index: linux-2.6.22-rc6/drivers/usb/Kconfig 
    209 =================================================================== 
    210 --- linux-2.6.22-rc6.orig/drivers/usb/Kconfig 
    211 +++ linux-2.6.22-rc6/drivers/usb/Kconfig 
     208Index: linux-2.6.22/drivers/usb/Kconfig 
     209=================================================================== 
     210--- linux-2.6.22.orig/drivers/usb/Kconfig 
     211+++ linux-2.6.22/drivers/usb/Kconfig 
    212212@@ -88,8 +88,6 @@ source "drivers/usb/storage/Kconfig" 
    213213  
     
    219219        depends on USB 
    220220  
    221 Index: linux-2.6.22-rc6/drivers/usb/Makefile 
    222 =================================================================== 
    223 --- linux-2.6.22-rc6.orig/drivers/usb/Makefile 
    224 +++ linux-2.6.22-rc6/drivers/usb/Makefile 
     221Index: linux-2.6.22/drivers/usb/Makefile 
     222=================================================================== 
     223--- linux-2.6.22.orig/drivers/usb/Makefile 
     224+++ linux-2.6.22/drivers/usb/Makefile 
    225225@@ -16,6 +16,7 @@ obj-$(CONFIG_USB_UHCI_HCD)    += host/ 
    226226 obj-$(CONFIG_USB_SL811_HCD)    += host/ 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/006-adm5120_leds.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/leds/Kconfig 
     1Index: linux-2.6.22/drivers/leds/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/leds/Kconfig 
    4 +++ linux-2.6.22-rc6/drivers/leds/Kconfig 
     3--- linux-2.6.22.orig/drivers/leds/Kconfig 
     4+++ linux-2.6.22/drivers/leds/Kconfig 
    55@@ -20,6 +20,27 @@ config LEDS_CLASS 
    66  
     
    3131        tristate "LED Support for the Sharp SL-C7x0 series" 
    3232        depends on LEDS_CLASS && PXA_SHARP_C7xx 
    33 Index: linux-2.6.22-rc6/drivers/leds/Makefile 
     33Index: linux-2.6.22/drivers/leds/Makefile 
    3434=================================================================== 
    35 --- linux-2.6.22-rc6.orig/drivers/leds/Makefile 
    36 +++ linux-2.6.22-rc6/drivers/leds/Makefile 
     35--- linux-2.6.22.orig/drivers/leds/Makefile 
     36+++ linux-2.6.22/drivers/leds/Makefile 
    3737@@ -5,6 +5,8 @@ obj-$(CONFIG_LEDS_CLASS)                += led-class.o 
    3838 obj-$(CONFIG_LEDS_TRIGGERS)            += led-triggers.o 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/007-adm5120_pci.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/arch/mips/pci/Makefile 
     1Index: linux-2.6.22/arch/mips/pci/Makefile 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/arch/mips/pci/Makefile 
    4 +++ linux-2.6.22-rc6/arch/mips/pci/Makefile 
     3--- linux-2.6.22.orig/arch/mips/pci/Makefile 
     4+++ linux-2.6.22/arch/mips/pci/Makefile 
    55@@ -50,3 +50,4 @@ obj-$(CONFIG_TOSHIBA_RBTX4938)        += fixup- 
    66 obj-$(CONFIG_VICTOR_MPC30X)    += fixup-mpc30x.o 
     
    88 obj-$(CONFIG_WR_PPMC)          += fixup-wrppmc.o 
    99+obj-$(CONFIG_PCI_ADM5120)      += fixup-adm5120.o ops-adm5120.o pci-adm5120.o 
    10 Index: linux-2.6.22-rc6/include/linux/pci_ids.h 
     10Index: linux-2.6.22/include/linux/pci_ids.h 
    1111=================================================================== 
    12 --- linux-2.6.22-rc6.orig/include/linux/pci_ids.h 
    13 +++ linux-2.6.22-rc6/include/linux/pci_ids.h 
    14 @@ -1712,6 +1712,9 @@ 
     12--- linux-2.6.22.orig/include/linux/pci_ids.h 
     13+++ linux-2.6.22/include/linux/pci_ids.h 
     14@@ -1713,6 +1713,9 @@ 
    1515 #define PCI_VENDOR_ID_ESDGMBH          0x12fe 
    1616 #define PCI_DEVICE_ID_ESDGMBH_CPCIASIO4 0x0111 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/100-mtd-myloder-partition-parser.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/mtd/Kconfig 
     1Index: linux-2.6.22/drivers/mtd/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/mtd/Kconfig 
    4 +++ linux-2.6.22-rc6/drivers/mtd/Kconfig 
     3--- linux-2.6.22.orig/drivers/mtd/Kconfig 
     4+++ linux-2.6.22/drivers/mtd/Kconfig 
    55@@ -155,6 +155,22 @@ config MTD_AFS_PARTS 
    66          for your particular device. It won't happen automatically. The 
     
    2626  
    2727 config MTD_CHAR 
    28 Index: linux-2.6.22-rc6/drivers/mtd/Makefile 
     28Index: linux-2.6.22/drivers/mtd/Makefile 
    2929=================================================================== 
    30 --- linux-2.6.22-rc6.orig/drivers/mtd/Makefile 
    31 +++ linux-2.6.22-rc6/drivers/mtd/Makefile 
     30--- linux-2.6.22.orig/drivers/mtd/Makefile 
     31+++ linux-2.6.22/drivers/mtd/Makefile 
    3232@@ -11,6 +11,7 @@ obj-$(CONFIG_MTD_CONCAT)      += mtdconcat.o 
    3333 obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/101-cfi-fixup-macronix-bootloc.patch

    r7863 r7916  
    1 Index: linux-2.6.22-rc6/drivers/mtd/chips/cfi_cmdset_0002.c 
     1Index: linux-2.6.22/drivers/mtd/chips/cfi_cmdset_0002.c 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/mtd/chips/cfi_cmdset_0002.c 
    4 +++ linux-2.6.22-rc6/drivers/mtd/chips/cfi_cmdset_0002.c 
     3--- linux-2.6.22.orig/drivers/mtd/chips/cfi_cmdset_0002.c 
     4+++ linux-2.6.22/drivers/mtd/chips/cfi_cmdset_0002.c 
    55@@ -47,12 +47,19 @@ 
    66 #define MANUFACTURER_AMD       0x0001 
     
    7575 }; 
    7676 static struct cfi_fixup jedec_fixup_table[] = { 
    77 Index: linux-2.6.22-rc6/drivers/mtd/chips/Kconfig 
     77Index: linux-2.6.22/drivers/mtd/chips/Kconfig 
    7878=================================================================== 
    79 --- linux-2.6.22-rc6.orig/drivers/mtd/chips/Kconfig 
    80 +++ linux-2.6.22-rc6/drivers/mtd/chips/Kconfig 
     79--- linux-2.6.22.orig/drivers/mtd/chips/Kconfig 
     80+++ linux-2.6.22/drivers/mtd/chips/Kconfig 
    8181@@ -196,6 +196,14 @@ config MTD_CFI_AMDSTD 
    8282          provides support for one of those command sets, used on chips 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/140-cmdline_hack.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/arch/mips/kernel/head.S 
     1Index: linux-2.6.22/arch/mips/kernel/head.S 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/arch/mips/kernel/head.S 
    4 +++ linux-2.6.22-rc6/arch/mips/kernel/head.S 
     3--- linux-2.6.22.orig/arch/mips/kernel/head.S 
     4+++ linux-2.6.22/arch/mips/kernel/head.S 
    55@@ -129,14 +129,19 @@ 
    66 #endif 
  • trunk/target/linux/adm5120-2.6/patches-2.6.22/500-Nand.patch

    r7797 r7916  
    1 Index: linux-2.6.22-rc6/drivers/mtd/nand/Kconfig 
     1Index: linux-2.6.22/drivers/mtd/nand/Kconfig 
    22=================================================================== 
    3 --- linux-2.6.22-rc6.orig/drivers/mtd/nand/Kconfig 
    4 +++ linux-2.6.22-rc6/drivers/mtd/nand/Kconfig 
     3--- linux-2.6.22.orig/drivers/mtd/nand/Kconfig 
     4+++ linux-2.6.22/drivers/mtd/nand/Kconfig 
    55@@ -81,6 +81,12 @@ config MTD_NAND_TS7250 
    66        help 
     
    1616        tristate 
    1717  
    18 Index: linux-2.6.22-rc6/drivers/mtd/nand/Makefile 
     18Index: linux-2.6.22/drivers/mtd/nand/Makefile 
    1919=================================================================== 
    20 --- linux-2.6.22-rc6.orig/drivers/mtd/nand/Makefile 
    21 +++ linux-2.6.22-rc6/drivers/mtd/nand/Makefile 
     20--- linux-2.6.22.orig/drivers/mtd/nand/Makefile 
     21+++ linux-2.6.22/drivers/mtd/nand/Makefile 
    2222@@ -10,6 +10,7 @@ obj-$(CONFIG_MTD_NAND_CAFE)           += cafe_nan 
    2323 obj-$(CONFIG_MTD_NAND_SPIA)            += spia.o 
  • trunk/target/linux/adm5120eb-2.6/Makefile

    r7915 r7916  
    1010BOARD:=adm5120eb 
    1111BOARDNAME:=ADM5120 (Big Endian) 
    12 FEATURES:=squashfs pci usb 
     12FEATURES:=squashfs pci usb broken 
    1313 
    1414LINUX_VERSION:=2.6.22.1 
Note: See TracChangeset for help on using the changeset viewer.