source: branches/backfire/target/linux/ppc40x/patches/005-openrb.patch @ 20824

Last change on this file since 20824 was 20824, checked in by juhosg, 7 years ago

ppc40x: increase kernel partition size on OpenRB/Magicbox (backport of r20820)

File size: 10.6 KB
  • new file arch/powerpc/boot/cuboot-openrb.c

    - +  
     1/* 
     2 * Old U-boot compatibility for OpenRB boards 
     3 * 
     4 * Author: Gabor Juhos <juhosg@openwrt.org> 
     5 *         Imre Kaloz <kaloz@openwrt.org> 
     6 * 
     7 * This program is free software; you can redistribute it and/or modify it 
     8 * under the terms of the GNU General Public License version 2 as published 
     9 * by the Free Software Foundation. 
     10 */ 
     11 
     12#include "ops.h" 
     13#include "io.h" 
     14#include "dcr.h" 
     15#include "stdio.h" 
     16#include "4xx.h" 
     17#include "44x.h" 
     18#include "cuboot.h" 
     19 
     20#define TARGET_4xx 
     21#define TARGET_405EP 
     22#include "ppcboot.h" 
     23 
     24static bd_t bd; 
     25 
     26static void fixup_cf_card(void) 
     27{ 
     28#define DCRN_CPC0_PCI_BASE      0xf9 
     29#define CF_CS0_BASE             0xff100000 
     30#define CF_CS1_BASE             0xff200000 
     31 
     32        /* Turn on PerWE instead of PCIsomething */ 
     33        mtdcr(DCRN_CPC0_PCI_BASE, 
     34              mfdcr(DCRN_CPC0_PCI_BASE) | (0x80000000L >> 27)); 
     35 
     36        /* PerCS1 (CF's CS0): base 0xff100000, 16-bit, rw */ 
     37        mtdcr(DCRN_EBC0_CFGADDR, EBC_B1CR); 
     38        mtdcr(DCRN_EBC0_CFGDATA, CF_CS0_BASE | EBC_BXCR_BU_RW | EBC_BXCR_BW_16); 
     39        mtdcr(DCRN_EBC0_CFGADDR, EBC_B1AP); 
     40        mtdcr(DCRN_EBC0_CFGDATA, 0x080bd800); 
     41 
     42        /* PerCS2 (CF's CS1): base 0xff200000, 16-bit, rw */ 
     43        mtdcr(DCRN_EBC0_CFGADDR, EBC_B2CR); 
     44        mtdcr(DCRN_EBC0_CFGDATA, CF_CS1_BASE | EBC_BXCR_BU_RW | EBC_BXCR_BW_16); 
     45        mtdcr(DCRN_EBC0_CFGADDR, EBC_B2AP); 
     46        mtdcr(DCRN_EBC0_CFGDATA, 0x080bd800); 
     47 
     48#undef DCRN_CPC0_PCI_BASE 
     49#undef CF_CS0_BASE 
     50#undef CF_CS1_BASE 
     51} 
     52 
     53static void openrb_fixups(void) 
     54{ 
     55        ibm405ep_fixup_clocks(bd.bi_procfreq / 8); 
     56        ibm4xx_sdram_fixup_memsize(); 
     57 
     58        fixup_cf_card(); 
     59 
     60        dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); 
     61} 
     62 
     63void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, 
     64                unsigned long r6, unsigned long r7) 
     65{ 
     66        CUBOOT_INIT(); 
     67        platform_ops.fixups = openrb_fixups; 
     68        platform_ops.exit = ibm40x_dbcr_reset; 
     69        fdt_init(_dtb_start); 
     70        serial_console_init(); 
     71} 
  • new file arch/powerpc/boot/dts/openrb.dts

    - +  
     1/* 
     2 * Device Tree Source for OpenRB boards 
     3 * 
     4 * Copyright 2009 Gabor Juhos <juhosg@openwrt.org> 
     5 * Copyright 2009 Imre Kaloz <kaloz@openwrt.org> 
     6 * 
     7 * Based on walnut.dts 
     8 * 
     9 * This file is licensed under the terms of the GNU General Public 
     10 * License version 2.  This program is licensed "as is" without 
     11 * any warranty of any kind, whether express or implied. 
     12 */ 
     13 
     14/dts-v1/; 
     15 
     16/ { 
     17        #address-cells = <1>; 
     18        #size-cells = <1>; 
     19        model = "openrb"; 
     20        compatible = "openrb"; 
     21        dcr-parent = <&{/cpus/cpu@0}>; 
     22 
     23        aliases { 
     24                ethernet0 = &EMAC0; 
     25                ethernet1 = &EMAC1; 
     26                serial0 = &UART0; 
     27                serial1 = &UART1; 
     28        }; 
     29 
     30        cpus { 
     31                #address-cells = <1>; 
     32                #size-cells = <0>; 
     33 
     34                cpu@0 { 
     35                        device_type = "cpu"; 
     36                        model = "PowerPC,405EP"; 
     37                        reg = <0x00000000>; 
     38                        clock-frequency = <0>; /* Filled in by zImage */ 
     39                        timebase-frequency = <0>; /* Filled in by zImage */ 
     40                        i-cache-line-size = <0x20>; 
     41                        d-cache-line-size = <0x20>; 
     42                        i-cache-size = <0x4000>; 
     43                        d-cache-size = <0x4000>; 
     44                        dcr-controller; 
     45                        dcr-access-method = "native"; 
     46                }; 
     47        }; 
     48 
     49        memory { 
     50                device_type = "memory"; 
     51                reg = <0x00000000 0x00000000>; /* Filled in by zImage */ 
     52        }; 
     53 
     54        UIC0: interrupt-controller { 
     55                compatible = "ibm,uic"; 
     56                interrupt-controller; 
     57                cell-index = <0>; 
     58                dcr-reg = <0x0c0 0x009>; 
     59                #address-cells = <0>; 
     60                #size-cells = <0>; 
     61                #interrupt-cells = <2>; 
     62        }; 
     63 
     64        plb { 
     65                compatible = "ibm,plb3"; 
     66                #address-cells = <1>; 
     67                #size-cells = <1>; 
     68                ranges; 
     69                clock-frequency = <0>; /* Filled in by zImage */ 
     70 
     71                SDRAM0: memory-controller { 
     72                        compatible = "ibm,sdram-405ep"; 
     73                        dcr-reg = <0x010 0x002>; 
     74                }; 
     75 
     76                MAL: mcmal { 
     77                        compatible = "ibm,mcmal-405ep", "ibm,mcmal"; 
     78                        dcr-reg = <0x180 0x062>; 
     79                        num-tx-chans = <4>; 
     80                        num-rx-chans = <2>; 
     81                        interrupt-parent = <&UIC0>; 
     82                        interrupts = < 
     83                                0xb 0x4 /* TXEOB */ 
     84                                0xc 0x4 /* RXEOB */ 
     85                                0xa 0x4 /* SERR */ 
     86                                0xd 0x4 /* TXDE */ 
     87                                0xe 0x4 /* RXDE */>; 
     88                }; 
     89 
     90                POB0: opb { 
     91                        compatible = "ibm,opb-405ep", "ibm,opb"; 
     92                        #address-cells = <1>; 
     93                        #size-cells = <1>; 
     94                        ranges = <0xef600000 0xef600000 0x00a00000>; 
     95                        dcr-reg = <0x0a0 0x005>; 
     96                        clock-frequency = <0>; /* Filled in by zImage */ 
     97 
     98                        UART0: serial@ef600300 { 
     99                                device_type = "serial"; 
     100                                compatible = "ns16550"; 
     101                                reg = <0xef600300 0x00000008>; 
     102                                virtual-reg = <0xef600300>; 
     103                                clock-frequency = <0>; /* Filled in by zImage */ 
     104                                current-speed = <115200>; 
     105                                interrupt-parent = <&UIC0>; 
     106                                interrupts = <0x0 0x4>; 
     107                        }; 
     108 
     109                        UART1: serial@ef600400 { 
     110                                device_type = "serial"; 
     111                                compatible = "ns16550"; 
     112                                reg = <0xef600400 0x00000008>; 
     113                                virtual-reg = <0xef600400>; 
     114                                clock-frequency = <0>; /* Filled in by zImage */ 
     115                                current-speed = <115200>; 
     116                                interrupt-parent = <&UIC0>; 
     117                                interrupts = <0x1 0x4>; 
     118                        }; 
     119 
     120                        IIC: i2c@ef600500 { 
     121                                compatible = "ibm,iic-405ep", "ibm,iic"; 
     122                                #address-cells = <1>; 
     123                                #size-cells = <0>; 
     124                                reg = <0xef600500 0x00000011>; 
     125                                interrupt-parent = <&UIC0>; 
     126                                interrupts = <0x2 0x4>; 
     127 
     128                                eeprom@50 { 
     129                                        compatible = "at24,24c16"; 
     130                                        reg = <0x50>; 
     131                                }; 
     132                        }; 
     133 
     134                        GPIO0: gpio-controller@ef600700 { 
     135                                compatible = "ibm,ppc4xx-gpio"; 
     136                                reg = <0xef600700 0x00000020>; 
     137                                #gpio-cells = <2>; 
     138                                gpio-controller; 
     139                        }; 
     140 
     141                        EMAC0: ethernet@ef600800 { 
     142                                linux,network-index = <0x0>; 
     143                                device_type = "network"; 
     144                                compatible = "ibm,emac-405ep", "ibm,emac"; 
     145                                interrupt-parent = <&UIC0>; 
     146                                interrupts = < 
     147                                        0xf 0x4 /* Ethernet */ 
     148                                        0x9 0x4 /* Ethernet Wake Up */>; 
     149                                local-mac-address = [000000000000]; /* Filled in by zImage */ 
     150                                reg = <0xef600800 0x00000070>; 
     151                                mal-device = <&MAL>; 
     152                                mal-tx-channel = <0>; 
     153                                mal-rx-channel = <0>; 
     154                                cell-index = <0>; 
     155                                max-frame-size = <0x5dc>; 
     156                                rx-fifo-size = <0x1000>; 
     157                                tx-fifo-size = <0x800>; 
     158                                phy-mode = "mii"; 
     159                                phy-map = <0x00000000>; 
     160                        }; 
     161 
     162                        EMAC1: ethernet@ef600900 { 
     163                                linux,network-index = <0x1>; 
     164                                device_type = "network"; 
     165                                compatible = "ibm,emac-405ep", "ibm,emac"; 
     166                                interrupt-parent = <&UIC0>; 
     167                                interrupts = < 
     168                                        0x11 0x4 /* Ethernet */ 
     169                                        0x09 0x4 /* Ethernet Wake Up */>; 
     170                                local-mac-address = [000000000000]; /* Filled in by zImage */ 
     171                                reg = <0xef600900 0x00000070>; 
     172                                mal-device = <&MAL>; 
     173                                mal-tx-channel = <2>; 
     174                                mal-rx-channel = <1>; 
     175                                cell-index = <1>; 
     176                                max-frame-size = <0x5dc>; 
     177                                rx-fifo-size = <0x1000>; 
     178                                tx-fifo-size = <0x800>; 
     179                                mdio-device = <&EMAC0>; 
     180                                phy-mode = "mii"; 
     181                                phy-map = <0x00000001>; 
     182                        }; 
     183 
     184                        leds { 
     185                                compatible = "gpio-leds"; 
     186                                user { 
     187                                        label = "openrb:green:user"; 
     188                                        gpios = <&GPIO0 2 1>; 
     189                                }; 
     190                        }; 
     191                }; 
     192 
     193                EBC0: ebc { 
     194                        compatible = "ibm,ebc-405ep", "ibm,ebc"; 
     195                        dcr-reg = <0x012 0x002>; 
     196                        #address-cells = <2>; 
     197                        #size-cells = <1>; 
     198                        /* The ranges property is supplied by the bootwrapper 
     199                         * and is based on the firmware's configuration of the 
     200                         * EBC bridge 
     201                         */ 
     202                        clock-frequency = <0>; /* Filled in by zImage */ 
     203 
     204                        cf_card@ff100000 { 
     205                                compatible = "magicbox-cf", "pata-magicbox-cf"; 
     206                                reg = <0x00000000 0xff100000 0x00001000 
     207                                       0x00000000 0xff200000 0x00001000>; 
     208                                interrupt-parent = <&UIC0>; 
     209                                interrupts = <0x19 0x1 /* IRQ_TYPE_EDGE_RISING */ >; 
     210                        }; 
     211 
     212                        nor_flash@ff800000 { 
     213                                compatible = "cfi-flash"; 
     214                                bank-width = <2>; 
     215                                reg = <0x00000000 0xff800000 0x00800000>; 
     216                                #address-cells = <1>; 
     217                                #size-cells = <1>; 
     218                                partition@0 { 
     219                                        label = "linux"; 
     220                                        reg = <0x0 0x140000>; 
     221                                }; 
     222                                partition@120000 { 
     223                                        label = "rootfs"; 
     224                                        reg = <0x140000 0x680000>; 
     225                                }; 
     226                                partition@7c0000 { 
     227                                        label = "u-boot"; 
     228                                        reg = <0x7c0000 0x30000>; 
     229                                        read-only; 
     230                                }; 
     231                        }; 
     232                }; 
     233 
     234                PCI0: pci@ec000000 { 
     235                        device_type = "pci"; 
     236                        #interrupt-cells = <1>; 
     237                        #size-cells = <2>; 
     238                        #address-cells = <3>; 
     239                        compatible = "ibm,plb405ep-pci", "ibm,plb-pci"; 
     240                        primary; 
     241                        reg = <0xeec00000 0x00000008    /* Config space access */ 
     242                               0xeed80000 0x00000004    /* IACK */ 
     243                               0xeed80000 0x00000004    /* Special cycle */ 
     244                               0xef480000 0x00000040>;  /* Internal registers */ 
     245 
     246                        /* Outbound ranges, one memory and one IO, 
     247                         * later cannot be changed. Chip supports a second 
     248                         * IO range but we don't use it for now 
     249                         */ 
     250                        ranges = <0x02000000 0x00000000 0x80000000 0x80000000 0x00000000 0x20000000 
     251                                  0x01000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>; 
     252 
     253                        /* Inbound 2GB range starting at 0 */ 
     254                        dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>; 
     255 
     256                        interrupt-map-mask = <0xf800 0x0 0x0 0x0>; 
     257                        interrupt-map = < 
     258                                /* IDSEL 1 */ 
     259                                0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8 
     260 
     261                                /* IDSEL 2 */ 
     262                                0x1000 0x0 0x0 0x0 &UIC0 0x1d 0x8 
     263 
     264                                /* IDSEL 3 */ 
     265                                0x1800 0x0 0x0 0x0 &UIC0 0x1e 0x8 
     266 
     267                                /* IDSEL 4 */ 
     268                                0x2000 0x0 0x0 0x0 &UIC0 0x1f 0x8 
     269                        >; 
     270                }; 
     271        }; 
     272 
     273        chosen { 
     274                linux,stdout-path = "/plb/opb/serial@ef600300"; 
     275        }; 
     276}; 
  • arch/powerpc/boot/Makefile

    a b $(obj)/cuboot-taishan.o: BOOTCFLAGS += - 
    4444$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=440 
    4545$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405 
    4646$(obj)/cuboot-magicbox.o: BOOTCFLAGS += -mcpu=405 
     47$(obj)/cuboot-openrb.o: BOOTCFLAGS += -mcpu=405 
    4748$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 
    4849$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 
    4950 
    src-plat := of.c cuboot-52xx.c cuboot-82 
    7879                cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ 
    7980                virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ 
    8081                cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \ 
    81                 cuboot-magicbox.c 
     82                cuboot-magicbox.c cuboot-openrb.c 
    8283src-boot := $(src-wlib) $(src-plat) empty.c 
    8384 
    8485src-boot := $(addprefix $(obj)/, $(src-boot)) 
    image-$(CONFIG_HOTFOOT) += cuImage.hot 
    197198image-$(CONFIG_WALNUT)                  += treeImage.walnut 
    198199image-$(CONFIG_ACADIA)                  += cuImage.acadia 
    199200image-$(CONFIG_MAGICBOX)                += cuImage.magicbox 
     201image-$(CONFIG_OPENRB)                  += cuImage.openrb 
    200202 
    201203# Board ports in arch/powerpc/platform/44x/Kconfig 
    202204image-$(CONFIG_EBONY)                   += treeImage.ebony cuImage.ebony 
  • arch/powerpc/platforms/40x/Kconfig

    a b config MAGICBOX 
    7070        help 
    7171          This option enables support for the Magicbox boards. 
    7272 
     73config OPENRB 
     74        bool "OpenRB" 
     75        depends on 40x 
     76        default n 
     77        select PPC40x_SIMPLE 
     78        select 405EP 
     79        select PCI 
     80        help 
     81          This option enables support for the OpenRB boards. 
     82 
    7383config MAKALU 
    7484        bool "Makalu" 
    7585        depends on 40x 
  • arch/powerpc/platforms/40x/ppc40x_simple.c

    a b static char *board[] __initdata = { 
    5656        "amcc,kilauea", 
    5757        "amcc,makalu", 
    5858        "est,hotfoot", 
    59         "magicbox" 
     59        "magicbox", 
     60        "openrb" 
    6061}; 
    6162 
    6263static int __init ppc40x_probe(void) 
Note: See TracBrowser for help on using the repository browser.