Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/40x: Add APM8018X SOC support

The AppliedMicro APM8018X embedded processor targets embedded applications that
require low power and a small footprint. It features a PowerPC 405 processor
core built in a 65nm low-power CMOS process with a five-stage pipeline executing
up to one instruction per cycle. The family has 128-kbytes of on-chip memory,
a 128-bit local bus and on-chip DDR2 SDRAM controller with 16-bit interface.

Signed-off-by: Tanmay Inamdar <tinamdar@apm.com>
Signed-off-by: Josh Boyer <jwboyer@gmail.com>

authored by

Tanmay Inamdar and committed by
Josh Boyer
d5b9ee7b fa8cbaaf

+307
+227
arch/powerpc/boot/dts/klondike.dts
··· 1 + /* 2 + * Device Tree for Klondike (APM8018X) board. 3 + * 4 + * Copyright (c) 2010, Applied Micro Circuits Corporation 5 + * Author: Tanmay Inamdar <tinamdar@apm.com> 6 + * 7 + * This program is free software; you can redistribute it and/or 8 + * modify it under the terms of the GNU General Public License as 9 + * published by the Free Software Foundation; either version 2 of 10 + * 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 Free Software 19 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20 + * MA 02111-1307 USA 21 + * 22 + */ 23 + 24 + /dts-v1/; 25 + 26 + / { 27 + #address-cells = <1>; 28 + #size-cells = <1>; 29 + model = "apm,klondike"; 30 + compatible = "apm,klondike"; 31 + dcr-parent = <&{/cpus/cpu@0}>; 32 + 33 + aliases { 34 + ethernet0 = &EMAC0; 35 + ethernet1 = &EMAC1; 36 + }; 37 + 38 + cpus { 39 + #address-cells = <1>; 40 + #size-cells = <0>; 41 + 42 + cpu@0 { 43 + device_type = "cpu"; 44 + model = "PowerPC,apm8018x"; 45 + reg = <0x00000000>; 46 + clock-frequency = <300000000>; /* Filled in by U-Boot */ 47 + timebase-frequency = <300000000>; /* Filled in by U-Boot */ 48 + i-cache-line-size = <32>; 49 + d-cache-line-size = <32>; 50 + i-cache-size = <16384>; /* 16 kB */ 51 + d-cache-size = <16384>; /* 16 kB */ 52 + dcr-controller; 53 + dcr-access-method = "native"; 54 + }; 55 + }; 56 + 57 + memory { 58 + device_type = "memory"; 59 + reg = <0x00000000 0x20000000>; /* Filled in by U-Boot */ 60 + }; 61 + 62 + UIC0: interrupt-controller { 63 + compatible = "ibm,uic"; 64 + interrupt-controller; 65 + cell-index = <0>; 66 + dcr-reg = <0x0c0 0x010>; 67 + #address-cells = <0>; 68 + #size-cells = <0>; 69 + #interrupt-cells = <2>; 70 + }; 71 + 72 + UIC1: interrupt-controller1 { 73 + compatible = "ibm,uic"; 74 + interrupt-controller; 75 + cell-index = <1>; 76 + dcr-reg = <0x0d0 0x010>; 77 + #address-cells = <0>; 78 + #size-cells = <0>; 79 + #interrupt-cells = <2>; 80 + interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */ 81 + interrupt-parent = <&UIC0>; 82 + }; 83 + 84 + UIC2: interrupt-controller2 { 85 + compatible = "ibm,uic"; 86 + interrupt-controller; 87 + cell-index = <2>; 88 + dcr-reg = <0x0e0 0x010>; 89 + #address-cells = <0>; 90 + #size-cells = <0>; 91 + #interrupt-cells = <2>; 92 + interrupts = <0x0a 0x4 0x0b 0x4>; /* cascade */ 93 + interrupt-parent = <&UIC0>; 94 + }; 95 + 96 + UIC3: interrupt-controller3 { 97 + compatible = "ibm,uic"; 98 + interrupt-controller; 99 + cell-index = <3>; 100 + dcr-reg = <0x0f0 0x010>; 101 + #address-cells = <0>; 102 + #size-cells = <0>; 103 + #interrupt-cells = <2>; 104 + interrupts = <0x10 0x4 0x11 0x4>; /* cascade */ 105 + interrupt-parent = <&UIC0>; 106 + }; 107 + 108 + plb { 109 + compatible = "ibm,plb4"; 110 + #address-cells = <1>; 111 + #size-cells = <1>; 112 + ranges; 113 + clock-frequency = <0>; /* Filled in by U-Boot */ 114 + 115 + SDRAM0: memory-controller { 116 + compatible = "ibm,sdram-apm8018x"; 117 + dcr-reg = <0x010 0x002>; 118 + }; 119 + 120 + MAL0: mcmal { 121 + compatible = "ibm,mcmal2"; 122 + dcr-reg = <0x180 0x062>; 123 + num-tx-chans = <2>; 124 + num-rx-chans = <16>; 125 + #address-cells = <0>; 126 + #size-cells = <0>; 127 + interrupt-parent = <&UIC1>; 128 + interrupts = </*TXEOB*/ 0x6 0x4 129 + /*RXEOB*/ 0x7 0x4 130 + /*SERR*/ 0x1 0x4 131 + /*TXDE*/ 0x2 0x4 132 + /*RXDE*/ 0x3 0x4>; 133 + }; 134 + 135 + POB0: opb { 136 + compatible = "ibm,opb"; 137 + #address-cells = <1>; 138 + #size-cells = <1>; 139 + ranges = <0x20000000 0x20000000 0x30000000 140 + 0x50000000 0x50000000 0x10000000 141 + 0x60000000 0x60000000 0x10000000 142 + 0xFE000000 0xFE000000 0x00010000>; 143 + dcr-reg = <0x100 0x020>; 144 + clock-frequency = <300000000>; /* Filled in by U-Boot */ 145 + 146 + RGMII0: emac-rgmii@400a2000 { 147 + compatible = "ibm,rgmii"; 148 + reg = <0x400a2000 0x00000010>; 149 + has-mdio; 150 + }; 151 + 152 + TAH0: emac-tah@400a3000 { 153 + compatible = "ibm,tah"; 154 + reg = <0x400a3000 0x100>; 155 + }; 156 + 157 + TAH1: emac-tah@400a4000 { 158 + compatible = "ibm,tah"; 159 + reg = <0x400a4000 0x100>; 160 + }; 161 + 162 + EMAC0: ethernet@400a0000 { 163 + compatible = "ibm,emac4", "ibm-emac4sync"; 164 + interrupt-parent = <&EMAC0>; 165 + interrupts = <0x0>; 166 + #interrupt-cells = <1>; 167 + #address-cells = <0>; 168 + #size-cells = <0>; 169 + interrupt-map = </*Status*/ 0x0 &UIC0 0x13 0x4>; 170 + reg = <0x400a0000 0x00000100>; 171 + local-mac-address = [000000000000]; /* Filled in by U-Boot */ 172 + mal-device = <&MAL0>; 173 + mal-tx-channel = <0x0>; 174 + mal-rx-channel = <0x0>; 175 + cell-index = <0>; 176 + max-frame-size = <9000>; 177 + rx-fifo-size = <4096>; 178 + tx-fifo-size = <2048>; 179 + phy-mode = "rgmii"; 180 + phy-address = <0x2>; 181 + turbo = "no"; 182 + phy-map = <0x00000000>; 183 + rgmii-device = <&RGMII0>; 184 + rgmii-channel = <0>; 185 + tah-device = <&TAH0>; 186 + tah-channel = <0>; 187 + has-inverted-stacr-oc; 188 + has-new-stacr-staopc; 189 + }; 190 + 191 + EMAC1: ethernet@400a1000 { 192 + compatible = "ibm,emac4", "ibm-emac4sync"; 193 + status = "disabled"; 194 + interrupt-parent = <&EMAC1>; 195 + interrupts = <0x0>; 196 + #interrupt-cells = <1>; 197 + #address-cells = <0>; 198 + #size-cells = <0>; 199 + interrupt-map = </*Status*/ 0x0 &UIC0 0x14 0x4>; 200 + reg = <0x400a1000 0x00000100>; 201 + local-mac-address = [000000000000]; /* Filled in by U-Boot */ 202 + mal-device = <&MAL0>; 203 + mal-tx-channel = <1>; 204 + mal-rx-channel = <8>; 205 + cell-index = <1>; 206 + max-frame-size = <9000>; 207 + rx-fifo-size = <4096>; 208 + tx-fifo-size = <2048>; 209 + phy-mode = "rgmii"; 210 + phy-address = <0x3>; 211 + turbo = "no"; 212 + phy-map = <0x00000000>; 213 + rgmii-device = <&RGMII0>; 214 + rgmii-channel = <1>; 215 + tah-device = <&TAH1>; 216 + tah-channel = <0>; 217 + has-inverted-stacr-oc; 218 + has-new-stacr-staopc; 219 + mdio-device = <&EMAC0>; 220 + }; 221 + }; 222 + }; 223 + 224 + chosen { 225 + linux,stdout-path = "/plb/opb/serial@50001000"; 226 + }; 227 + };
+55
arch/powerpc/configs/40x/klondike_defconfig
··· 1 + CONFIG_40x=y 2 + CONFIG_EXPERIMENTAL=y 3 + CONFIG_SYSVIPC=y 4 + CONFIG_LOG_BUF_SHIFT=14 5 + CONFIG_SYSFS_DEPRECATED=y 6 + CONFIG_SYSFS_DEPRECATED_V2=y 7 + CONFIG_BLK_DEV_INITRD=y 8 + CONFIG_SYSCTL_SYSCALL=y 9 + CONFIG_EMBEDDED=y 10 + CONFIG_SLAB=y 11 + CONFIG_MODULES=y 12 + CONFIG_MODULE_UNLOAD=y 13 + # CONFIG_WALNUT is not set 14 + CONFIG_APM8018X=y 15 + # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 16 + CONFIG_MATH_EMULATION=y 17 + # CONFIG_MIGRATION is not set 18 + # CONFIG_SUSPEND is not set 19 + CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 20 + CONFIG_PROC_DEVICETREE=y 21 + CONFIG_BLK_DEV_RAM=y 22 + CONFIG_BLK_DEV_RAM_SIZE=35000 23 + CONFIG_SCSI=y 24 + CONFIG_BLK_DEV_SD=y 25 + CONFIG_CHR_DEV_SG=y 26 + CONFIG_SCSI_SAS_ATTRS=y 27 + # CONFIG_INPUT is not set 28 + # CONFIG_SERIO is not set 29 + # CONFIG_VT is not set 30 + # CONFIG_UNIX98_PTYS is not set 31 + # CONFIG_LEGACY_PTYS is not set 32 + # CONFIG_DEVKMEM is not set 33 + # CONFIG_HW_RANDOM is not set 34 + # CONFIG_HWMON is not set 35 + # CONFIG_USB_SUPPORT is not set 36 + # CONFIG_IOMMU_SUPPORT is not set 37 + CONFIG_EXT2_FS=y 38 + CONFIG_EXT3_FS=y 39 + # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 40 + CONFIG_EXT4_FS=y 41 + CONFIG_MSDOS_FS=y 42 + CONFIG_VFAT_FS=y 43 + CONFIG_PROC_KCORE=y 44 + CONFIG_TMPFS=y 45 + CONFIG_CRAMFS=y 46 + CONFIG_NLS_CODEPAGE_437=y 47 + CONFIG_NLS_ASCII=y 48 + CONFIG_NLS_ISO8859_1=y 49 + CONFIG_NLS_UTF8=y 50 + CONFIG_AVERAGE=y 51 + CONFIG_MAGIC_SYSRQ=y 52 + # CONFIG_SCHED_DEBUG is not set 53 + # CONFIG_DEBUG_BUGVERBOSE is not set 54 + CONFIG_SYSCTL_SYSCALL_CHECK=y 55 + # CONFIG_FTRACE is not set
+13
arch/powerpc/kernel/cputable.c
··· 1505 1505 .machine_check = machine_check_4xx, 1506 1506 .platform = "ppc405", 1507 1507 }, 1508 + { /* APM8018X */ 1509 + .pvr_mask = 0xffff0000, 1510 + .pvr_value = 0x7ff11432, 1511 + .cpu_name = "APM8018X", 1512 + .cpu_features = CPU_FTRS_40X, 1513 + .cpu_user_features = PPC_FEATURE_32 | 1514 + PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1515 + .mmu_features = MMU_FTR_TYPE_40x, 1516 + .icache_bsize = 32, 1517 + .dcache_bsize = 32, 1518 + .machine_check = machine_check_4xx, 1519 + .platform = "ppc405", 1520 + }, 1508 1521 { /* default match */ 1509 1522 .pvr_mask = 0x00000000, 1510 1523 .pvr_value = 0x00000000,
+11
arch/powerpc/platforms/40x/Kconfig
··· 186 186 # bool 187 187 # depends on !STB03xxx && PPC4xx_DMA 188 188 # default y 189 + # 190 + 191 + config APM8018X 192 + bool "APM8018X" 193 + depends on 40x 194 + default n 195 + select PPC40x_SIMPLE 196 + help 197 + This option enables support for the AppliedMicro APM8018X evaluation 198 + board. 199 +
+1
arch/powerpc/platforms/40x/ppc40x_simple.c
··· 55 55 "amcc,haleakala", 56 56 "amcc,kilauea", 57 57 "amcc,makalu", 58 + "apm,klondike", 58 59 "est,hotfoot" 59 60 }; 60 61