source: branches/backfire/target/linux/ppc40x/patches/004-magicbox.patch @ 20942

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

backfire: ppc40x: add more EBC_BXCR defines (backport of r20930)

File size: 11.6 KB
  • new file arch/powerpc/boot/cuboot-magicbox.c

    - +  
     1/* 
     2 * Old U-boot compatibility for Magicbox boards 
     3 * 
     4 * Author: Imre Kaloz <kaloz@openwrt.org> 
     5 *         Gabor Juhos <juhosg@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_perwe(void) 
     27{ 
     28#define DCRN_CPC0_PCI_BASE      0xf9 
     29 
     30        /* Turn on PerWE instead of PCIINT */ 
     31        mtdcr(DCRN_CPC0_PCI_BASE, 
     32              mfdcr(DCRN_CPC0_PCI_BASE) | (0x80000000L >> 27)); 
     33 
     34#undef DCRN_CPC0_PCI_BASE 
     35} 
     36 
     37static void fixup_cf_card(void) 
     38{ 
     39#define CF_CS0_BASE     0xff100000 
     40#define CF_CS1_BASE     0xff200000 
     41 
     42        /* PerCS1 (CF's CS0): base 0xff100000, 16-bit, rw */ 
     43        mtdcr(DCRN_EBC0_CFGADDR, EBC_B1CR); 
     44        mtdcr(DCRN_EBC0_CFGDATA, CF_CS0_BASE | EBC_BXCR_BS_1M | 
     45                                 EBC_BXCR_BU_RW | EBC_BXCR_BW_16); 
     46        mtdcr(DCRN_EBC0_CFGADDR, EBC_B1AP); 
     47        mtdcr(DCRN_EBC0_CFGDATA, 0x080bd800); 
     48 
     49        /* PerCS2 (CF's CS1): base 0xff200000, 16-bit, rw */ 
     50        mtdcr(DCRN_EBC0_CFGADDR, EBC_B2CR); 
     51        mtdcr(DCRN_EBC0_CFGDATA, CF_CS1_BASE | EBC_BXCR_BS_1M | 
     52                                 EBC_BXCR_BU_RW | EBC_BXCR_BW_16); 
     53        mtdcr(DCRN_EBC0_CFGADDR, EBC_B2AP); 
     54        mtdcr(DCRN_EBC0_CFGDATA, 0x080bd800); 
     55 
     56#undef CF_CS0_BASE 
     57#undef CF_CS1_BASE 
     58} 
     59 
     60static void magicbox_fixups(void) 
     61{ 
     62        ibm405ep_fixup_clocks(bd.bi_procfreq / 8); 
     63        ibm4xx_sdram_fixup_memsize(); 
     64 
     65        /* Magicbox v1 has only one ethernet, one serial and no 
     66         * CF slot -- detect it using it's fake enet1addr 
     67         */ 
     68        if ((bd.bi_enet1addr[0] == 0x00) && 
     69            (bd.bi_enet1addr[1] == 0x00) && 
     70            (bd.bi_enet1addr[2] == 0x02) && 
     71            (bd.bi_enet1addr[3] == 0xfa) && 
     72            (bd.bi_enet1addr[4] == 0xf0) && 
     73            (bd.bi_enet1addr[5] == 0x80)) { 
     74                void *devp; 
     75 
     76                devp = finddevice("/plb/opb/ethernet@ef600900"); 
     77                del_node(devp); 
     78                devp = finddevice("/plb/opb/serial@ef600400"); 
     79                del_node(devp); 
     80                devp = finddevice("/plb/ebc/cf_card@ff100000"); 
     81                del_node(devp); 
     82        } else { 
     83                fixup_perwe(); 
     84                fixup_cf_card(); 
     85        } 
     86 
     87        dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); 
     88} 
     89 
     90void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, 
     91                unsigned long r6, unsigned long r7) 
     92{ 
     93        CUBOOT_INIT(); 
     94        platform_ops.fixups = magicbox_fixups; 
     95        platform_ops.exit = ibm40x_dbcr_reset; 
     96        fdt_init(_dtb_start); 
     97        serial_console_init(); 
     98} 
  • new file arch/powerpc/boot/dts/magicbox.dts

    - +  
     1/* 
     2 * Device Tree Source for Magicbox boards 
     3 * 
     4 * Copyright 2008-2009 Imre Kaloz <kaloz@openwrt.org> 
     5 * Copyright 2009 Gabor Juhos <juhosg@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 = "magicbox"; 
     20        compatible = "magicbox"; 
     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                                dtt@48 { 
     129                                        compatible = "national,lm75"; 
     130                                        reg = <0x48>; 
     131                                }; 
     132 
     133                                eeprom@50 { 
     134                                        compatible = "at24,24c16"; 
     135                                        reg = <0x50>; 
     136                                }; 
     137                        }; 
     138 
     139                        GPIO0: gpio-controller@ef600700 { 
     140                                compatible = "ibm,ppc4xx-gpio"; 
     141                                reg = <0xef600700 0x00000020>; 
     142                                #gpio-cells = <2>; 
     143                                gpio-controller; 
     144                        }; 
     145 
     146                        EMAC0: ethernet@ef600800 { 
     147                                linux,network-index = <0x0>; 
     148                                device_type = "network"; 
     149                                compatible = "ibm,emac-405ep", "ibm,emac"; 
     150                                interrupt-parent = <&UIC0>; 
     151                                interrupts = < 
     152                                        0xf 0x4 /* Ethernet */ 
     153                                        0x9 0x4 /* Ethernet Wake Up */>; 
     154                                local-mac-address = [000000000000]; /* Filled in by zImage */ 
     155                                reg = <0xef600800 0x00000070>; 
     156                                mal-device = <&MAL>; 
     157                                mal-tx-channel = <0>; 
     158                                mal-rx-channel = <0>; 
     159                                cell-index = <0>; 
     160                                max-frame-size = <0x5dc>; 
     161                                rx-fifo-size = <0x1000>; 
     162                                tx-fifo-size = <0x800>; 
     163                                phy-mode = "mii"; 
     164                                phy-map = <0x00000000>; 
     165                        }; 
     166 
     167                        EMAC1: ethernet@ef600900 { 
     168                                linux,network-index = <0x1>; 
     169                                device_type = "network"; 
     170                                compatible = "ibm,emac-405ep", "ibm,emac"; 
     171                                interrupt-parent = <&UIC0>; 
     172                                interrupts = < 
     173                                        0x11 0x4 /* Ethernet */ 
     174                                        0x09 0x4 /* Ethernet Wake Up */>; 
     175                                local-mac-address = [000000000000]; /* Filled in by zImage */ 
     176                                reg = <0xef600900 0x00000070>; 
     177                                mal-device = <&MAL>; 
     178                                mal-tx-channel = <2>; 
     179                                mal-rx-channel = <1>; 
     180                                cell-index = <1>; 
     181                                max-frame-size = <0x5dc>; 
     182                                rx-fifo-size = <0x1000>; 
     183                                tx-fifo-size = <0x800>; 
     184                                mdio-device = <&EMAC0>; 
     185                                phy-mode = "mii"; 
     186                                phy-map = <0x00000001>; 
     187                        }; 
     188 
     189                        leds { 
     190                                compatible = "gpio-leds"; 
     191                                user { 
     192                                        label = "magicbox:red:user"; 
     193                                        gpios = <&GPIO0 2 1>; 
     194                                }; 
     195                        }; 
     196                }; 
     197 
     198                EBC0: ebc { 
     199                        compatible = "ibm,ebc-405ep", "ibm,ebc"; 
     200                        dcr-reg = <0x012 0x002>; 
     201                        #address-cells = <2>; 
     202                        #size-cells = <1>; 
     203                        /* The ranges property is supplied by the bootwrapper 
     204                         * and is based on the firmware's configuration of the 
     205                         * EBC bridge 
     206                         */ 
     207                        clock-frequency = <0>; /* Filled in by zImage */ 
     208 
     209                        cf_card@ff100000 { 
     210                                compatible = "magicbox-cf", "pata-magicbox-cf"; 
     211                                reg = <0x00000000 0xff100000 0x00001000 
     212                                       0x00000000 0xff200000 0x00001000>; 
     213                                interrupt-parent = <&UIC0>; 
     214                                interrupts = <0x19 0x1 /* IRQ_TYPE_EDGE_RISING */ >; 
     215                        }; 
     216 
     217                        nor_flash@ffc00000 { 
     218                                compatible = "cfi-flash"; 
     219                                bank-width = <2>; 
     220                                reg = <0x00000000 0xffc00000 0x00400000>; 
     221                                #address-cells = <1>; 
     222                                #size-cells = <1>; 
     223                                partition0@0 { 
     224                                        label = "linux"; 
     225                                        reg = <0x0 0x140000>; 
     226                                }; 
     227                                partition1@120000 { 
     228                                        label = "rootfs"; 
     229                                        reg = <0x140000 0x680000>; 
     230                                }; 
     231                                partition2@7c0000 { 
     232                                        label = "u-boot"; 
     233                                        reg = <0x7c0000 0x30000>; 
     234                                        read-only; 
     235                                }; 
     236                                partition3@0 { 
     237                                        label = "firmware"; 
     238                                        reg = <0x0 0x7c0000>; 
     239                                }; 
     240                        }; 
     241                }; 
     242 
     243                PCI0: pci@ec000000 { 
     244                        device_type = "pci"; 
     245                        #interrupt-cells = <1>; 
     246                        #size-cells = <2>; 
     247                        #address-cells = <3>; 
     248                        compatible = "ibm,plb405ep-pci", "ibm,plb-pci"; 
     249                        primary; 
     250                        reg = <0xeec00000 0x00000008    /* Config space access */ 
     251                               0xeed80000 0x00000004    /* IACK */ 
     252                               0xeed80000 0x00000004    /* Special cycle */ 
     253                               0xef480000 0x00000040>;  /* Internal registers */ 
     254 
     255                        /* Outbound ranges, one memory and one IO, 
     256                         * later cannot be changed. Chip supports a second 
     257                         * IO range but we don't use it for now 
     258                         */ 
     259                        ranges = <0x02000000 0x00000000 0x80000000 0x80000000 0x00000000 0x20000000 
     260                                  0x01000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>; 
     261 
     262                        /* Inbound 2GB range starting at 0 */ 
     263                        dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>; 
     264 
     265                        interrupt-map-mask = <0xf800 0x0 0x0 0x0>; 
     266                        interrupt-map = < 
     267                                /* IDSEL 1 */ 
     268                                0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8 
     269 
     270                                /* IDSEL 2 */ 
     271                                0x1000 0x0 0x0 0x0 &UIC0 0x1d 0x8 
     272 
     273                                /* IDSEL 3 */ 
     274                                0x1800 0x0 0x0 0x0 &UIC0 0x1e 0x8 
     275 
     276                                /* IDSEL 4 */ 
     277                                0x2000 0x0 0x0 0x0 &UIC0 0x1f 0x8 
     278                        >; 
     279                }; 
     280        }; 
     281 
     282        chosen { 
     283                linux,stdout-path = "/plb/opb/serial@ef600300"; 
     284        }; 
     285}; 
  • arch/powerpc/boot/Makefile

    a b $(obj)/cuboot-hotfoot.o: BOOTCFLAGS += - 
    4343$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=440 
    4444$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=440 
    4545$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405 
     46$(obj)/cuboot-magicbox.o: BOOTCFLAGS += -mcpu=405 
    4647$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 
    4748$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 
    4849 
    src-plat := of.c cuboot-52xx.c cuboot-82 
    7677                cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ 
    7778                cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ 
    7879                virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ 
    79                 cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c 
     80                cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \ 
     81                cuboot-magicbox.c 
    8082src-boot := $(src-wlib) $(src-plat) empty.c 
    8183 
    8284src-boot := $(addprefix $(obj)/, $(src-boot)) 
    image-$(CONFIG_EP405) += dtbImage.ep40 
    194196image-$(CONFIG_HOTFOOT)                 += cuImage.hotfoot 
    195197image-$(CONFIG_WALNUT)                  += treeImage.walnut 
    196198image-$(CONFIG_ACADIA)                  += cuImage.acadia 
     199image-$(CONFIG_MAGICBOX)                += cuImage.magicbox 
    197200 
    198201# Board ports in arch/powerpc/platform/44x/Kconfig 
    199202image-$(CONFIG_EBONY)                   += treeImage.ebony cuImage.ebony 
  • arch/powerpc/platforms/40x/Kconfig

    a b config KILAUEA 
    6060        help 
    6161          This option enables support for the AMCC PPC405EX evaluation board. 
    6262 
     63config MAGICBOX 
     64        bool "Magicbox" 
     65        depends on 40x 
     66        default n 
     67        select PPC40x_SIMPLE 
     68        select 405EP 
     69        select PCI 
     70        help 
     71          This option enables support for the Magicbox boards. 
     72 
    6373config MAKALU 
    6474        bool "Makalu" 
    6575        depends on 40x 
  • arch/powerpc/platforms/40x/ppc40x_simple.c

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