16bbc5476SHugh Blemings/* 26bbc5476SHugh Blemings * Device Tree Source for IBM/AMCC Taishan 36bbc5476SHugh Blemings * 46bbc5476SHugh Blemings * Copyright 2007 IBM Corp. 56bbc5476SHugh Blemings * Hugh Blemings <hugh@au.ibm.com> based off code by 66bbc5476SHugh Blemings * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> 76bbc5476SHugh Blemings * 86bbc5476SHugh Blemings * This file is licensed under the terms of the GNU General Public 96bbc5476SHugh Blemings * License version 2. This program is licensed "as is" without 106bbc5476SHugh Blemings * any warranty of any kind, whether express or implied. 116bbc5476SHugh Blemings */ 126bbc5476SHugh Blemings 136bbc5476SHugh Blemings/ { 146bbc5476SHugh Blemings #address-cells = <2>; 156bbc5476SHugh Blemings #size-cells = <1>; 166bbc5476SHugh Blemings model = "amcc,taishan"; 176bbc5476SHugh Blemings compatible = "amcc,taishan"; 1872fda114SJosh Boyer dcr-parent = <&/cpus/cpu@0>; 196bbc5476SHugh Blemings 206bbc5476SHugh Blemings cpus { 216bbc5476SHugh Blemings #address-cells = <1>; 226bbc5476SHugh Blemings #size-cells = <0>; 236bbc5476SHugh Blemings 2472fda114SJosh Boyer cpu@0 { 256bbc5476SHugh Blemings device_type = "cpu"; 2672fda114SJosh Boyer model = "PowerPC,440GX"; 276bbc5476SHugh Blemings reg = <0>; 286bbc5476SHugh Blemings clock-frequency = <2FAF0800>; // 800MHz 296bbc5476SHugh Blemings timebase-frequency = <0>; // Filled in by zImage 306bbc5476SHugh Blemings i-cache-line-size = <32>; 316bbc5476SHugh Blemings d-cache-line-size = <32>; 326bbc5476SHugh Blemings i-cache-size = <8000>; /* 32 kB */ 336bbc5476SHugh Blemings d-cache-size = <8000>; /* 32 kB */ 346bbc5476SHugh Blemings dcr-controller; 356bbc5476SHugh Blemings dcr-access-method = "native"; 366bbc5476SHugh Blemings }; 376bbc5476SHugh Blemings }; 386bbc5476SHugh Blemings 396bbc5476SHugh Blemings memory { 406bbc5476SHugh Blemings device_type = "memory"; 416bbc5476SHugh Blemings reg = <0 0 0>; // Filled in by zImage 426bbc5476SHugh Blemings }; 436bbc5476SHugh Blemings 446bbc5476SHugh Blemings 456bbc5476SHugh Blemings UICB0: interrupt-controller-base { 466bbc5476SHugh Blemings compatible = "ibm,uic-440gx", "ibm,uic"; 476bbc5476SHugh Blemings interrupt-controller; 486bbc5476SHugh Blemings cell-index = <3>; 496bbc5476SHugh Blemings dcr-reg = <200 009>; 506bbc5476SHugh Blemings #address-cells = <0>; 516bbc5476SHugh Blemings #size-cells = <0>; 526bbc5476SHugh Blemings #interrupt-cells = <2>; 536bbc5476SHugh Blemings }; 546bbc5476SHugh Blemings 556bbc5476SHugh Blemings 566bbc5476SHugh Blemings UIC0: interrupt-controller0 { 576bbc5476SHugh Blemings compatible = "ibm,uic-440gx", "ibm,uic"; 586bbc5476SHugh Blemings interrupt-controller; 596bbc5476SHugh Blemings cell-index = <0>; 606bbc5476SHugh Blemings dcr-reg = <0c0 009>; 616bbc5476SHugh Blemings #address-cells = <0>; 626bbc5476SHugh Blemings #size-cells = <0>; 636bbc5476SHugh Blemings #interrupt-cells = <2>; 646bbc5476SHugh Blemings interrupts = <01 4 00 4>; /* cascade - first non-critical */ 656bbc5476SHugh Blemings interrupt-parent = <&UICB0>; 666bbc5476SHugh Blemings 676bbc5476SHugh Blemings }; 686bbc5476SHugh Blemings 696bbc5476SHugh Blemings UIC1: interrupt-controller1 { 706bbc5476SHugh Blemings compatible = "ibm,uic-440gx", "ibm,uic"; 716bbc5476SHugh Blemings interrupt-controller; 726bbc5476SHugh Blemings cell-index = <1>; 736bbc5476SHugh Blemings dcr-reg = <0d0 009>; 746bbc5476SHugh Blemings #address-cells = <0>; 756bbc5476SHugh Blemings #size-cells = <0>; 766bbc5476SHugh Blemings #interrupt-cells = <2>; 776bbc5476SHugh Blemings interrupts = <03 4 02 4>; /* cascade */ 786bbc5476SHugh Blemings interrupt-parent = <&UICB0>; 796bbc5476SHugh Blemings }; 806bbc5476SHugh Blemings 816bbc5476SHugh Blemings UIC2: interrupt-controller2 { 826bbc5476SHugh Blemings compatible = "ibm,uic-440gx", "ibm,uic"; 836bbc5476SHugh Blemings interrupt-controller; 846bbc5476SHugh Blemings cell-index = <2>; /* was 1 */ 856bbc5476SHugh Blemings dcr-reg = <210 009>; 866bbc5476SHugh Blemings #address-cells = <0>; 876bbc5476SHugh Blemings #size-cells = <0>; 886bbc5476SHugh Blemings #interrupt-cells = <2>; 896bbc5476SHugh Blemings interrupts = <05 4 04 4>; /* cascade */ 906bbc5476SHugh Blemings interrupt-parent = <&UICB0>; 916bbc5476SHugh Blemings }; 926bbc5476SHugh Blemings 936bbc5476SHugh Blemings 946bbc5476SHugh Blemings CPC0: cpc { 956bbc5476SHugh Blemings compatible = "ibm,cpc-440gp"; 966bbc5476SHugh Blemings dcr-reg = <0b0 003 0e0 010>; 976bbc5476SHugh Blemings // FIXME: anything else? 986bbc5476SHugh Blemings }; 996bbc5476SHugh Blemings 1006bbc5476SHugh Blemings plb { 1016bbc5476SHugh Blemings compatible = "ibm,plb-440gx", "ibm,plb4"; 1026bbc5476SHugh Blemings #address-cells = <2>; 1036bbc5476SHugh Blemings #size-cells = <1>; 1046bbc5476SHugh Blemings ranges; 1056bbc5476SHugh Blemings clock-frequency = <9896800>; // 160MHz 1066bbc5476SHugh Blemings 1076bbc5476SHugh Blemings SDRAM0: memory-controller { 1086bbc5476SHugh Blemings compatible = "ibm,sdram-440gp"; 1096bbc5476SHugh Blemings dcr-reg = <010 2>; 1106bbc5476SHugh Blemings // FIXME: anything else? 1116bbc5476SHugh Blemings }; 1126bbc5476SHugh Blemings 1136bbc5476SHugh Blemings SRAM0: sram { 1146bbc5476SHugh Blemings compatible = "ibm,sram-440gp"; 1156bbc5476SHugh Blemings dcr-reg = <020 8 00a 1>; 1166bbc5476SHugh Blemings }; 1176bbc5476SHugh Blemings 1186bbc5476SHugh Blemings DMA0: dma { 1196bbc5476SHugh Blemings // FIXME: ??? 1206bbc5476SHugh Blemings compatible = "ibm,dma-440gp"; 1216bbc5476SHugh Blemings dcr-reg = <100 027>; 1226bbc5476SHugh Blemings }; 1236bbc5476SHugh Blemings 1246bbc5476SHugh Blemings MAL0: mcmal { 1256bbc5476SHugh Blemings compatible = "ibm,mcmal-440gx", "ibm,mcmal2"; 1266bbc5476SHugh Blemings dcr-reg = <180 62>; 1276bbc5476SHugh Blemings num-tx-chans = <4>; 1286bbc5476SHugh Blemings num-rx-chans = <4>; 1296bbc5476SHugh Blemings interrupt-parent = <&MAL0>; 1306bbc5476SHugh Blemings interrupts = <0 1 2 3 4>; 1316bbc5476SHugh Blemings #interrupt-cells = <1>; 1326bbc5476SHugh Blemings #address-cells = <0>; 1336bbc5476SHugh Blemings #size-cells = <0>; 1346bbc5476SHugh Blemings interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 1356bbc5476SHugh Blemings /*RXEOB*/ 1 &UIC0 b 4 1366bbc5476SHugh Blemings /*SERR*/ 2 &UIC1 0 4 1376bbc5476SHugh Blemings /*TXDE*/ 3 &UIC1 1 4 1386bbc5476SHugh Blemings /*RXDE*/ 4 &UIC1 2 4>; 1396bbc5476SHugh Blemings interrupt-map-mask = <ffffffff>; 1406bbc5476SHugh Blemings }; 1416bbc5476SHugh Blemings 1426bbc5476SHugh Blemings POB0: opb { 1436bbc5476SHugh Blemings compatible = "ibm,opb-440gx", "ibm,opb"; 1446bbc5476SHugh Blemings #address-cells = <1>; 1456bbc5476SHugh Blemings #size-cells = <1>; 1466bbc5476SHugh Blemings /* Wish there was a nicer way of specifying a full 32-bit 1476bbc5476SHugh Blemings range */ 1486bbc5476SHugh Blemings ranges = <00000000 1 00000000 80000000 1496bbc5476SHugh Blemings 80000000 1 80000000 80000000>; 1506bbc5476SHugh Blemings dcr-reg = <090 00b>; 1516bbc5476SHugh Blemings interrupt-parent = <&UIC1>; 1526bbc5476SHugh Blemings interrupts = <7 4>; 1536bbc5476SHugh Blemings clock-frequency = <4C4B400>; // 80MHz 1546bbc5476SHugh Blemings 1556bbc5476SHugh Blemings 1566bbc5476SHugh Blemings EBC0: ebc { 1576bbc5476SHugh Blemings compatible = "ibm,ebc-440gx", "ibm,ebc"; 1586bbc5476SHugh Blemings dcr-reg = <012 2>; 1596bbc5476SHugh Blemings #address-cells = <2>; 1606bbc5476SHugh Blemings #size-cells = <1>; 1616bbc5476SHugh Blemings clock-frequency = <4C4B400>; // 80MHz 1626bbc5476SHugh Blemings 1636bbc5476SHugh Blemings /* ranges property is supplied by zImage 1646bbc5476SHugh Blemings * based on firmware's configuration of the 1656bbc5476SHugh Blemings * EBC bridge */ 1666bbc5476SHugh Blemings 1676bbc5476SHugh Blemings interrupts = <5 4>; 1686bbc5476SHugh Blemings interrupt-parent = <&UIC1>; 1696bbc5476SHugh Blemings 1706bbc5476SHugh Blemings /* TODO: Add other EBC devices */ 1716bbc5476SHugh Blemings }; 1726bbc5476SHugh Blemings 1736bbc5476SHugh Blemings 1746bbc5476SHugh Blemings 1756bbc5476SHugh Blemings UART0: serial@40000200 { 1766bbc5476SHugh Blemings device_type = "serial"; 1776bbc5476SHugh Blemings compatible = "ns16550"; 1786bbc5476SHugh Blemings reg = <40000200 8>; 1796bbc5476SHugh Blemings virtual-reg = <e0000200>; 1806bbc5476SHugh Blemings clock-frequency = <A8C000>; 1816bbc5476SHugh Blemings current-speed = <1C200>; /* 115200 */ 1826bbc5476SHugh Blemings interrupt-parent = <&UIC0>; 1836bbc5476SHugh Blemings interrupts = <0 4>; 1846bbc5476SHugh Blemings }; 1856bbc5476SHugh Blemings 1866bbc5476SHugh Blemings UART1: serial@40000300 { 1876bbc5476SHugh Blemings device_type = "serial"; 1886bbc5476SHugh Blemings compatible = "ns16550"; 1896bbc5476SHugh Blemings reg = <40000300 8>; 1906bbc5476SHugh Blemings virtual-reg = <e0000300>; 1916bbc5476SHugh Blemings clock-frequency = <A8C000>; 1926bbc5476SHugh Blemings current-speed = <1C200>; /* 115200 */ 1936bbc5476SHugh Blemings interrupt-parent = <&UIC0>; 1946bbc5476SHugh Blemings interrupts = <1 4>; 1956bbc5476SHugh Blemings }; 1966bbc5476SHugh Blemings 1976bbc5476SHugh Blemings IIC0: i2c@40000400 { 1986bbc5476SHugh Blemings /* FIXME */ 1996bbc5476SHugh Blemings device_type = "i2c"; 2006bbc5476SHugh Blemings compatible = "ibm,iic-440gp", "ibm,iic"; 2016bbc5476SHugh Blemings reg = <40000400 14>; 2026bbc5476SHugh Blemings interrupt-parent = <&UIC0>; 2036bbc5476SHugh Blemings interrupts = <2 4>; 2046bbc5476SHugh Blemings }; 2056bbc5476SHugh Blemings IIC1: i2c@40000500 { 2066bbc5476SHugh Blemings /* FIXME */ 2076bbc5476SHugh Blemings device_type = "i2c"; 2086bbc5476SHugh Blemings compatible = "ibm,iic-440gp", "ibm,iic"; 2096bbc5476SHugh Blemings reg = <40000500 14>; 2106bbc5476SHugh Blemings interrupt-parent = <&UIC0>; 2116bbc5476SHugh Blemings interrupts = <3 4>; 2126bbc5476SHugh Blemings }; 2136bbc5476SHugh Blemings 2146bbc5476SHugh Blemings GPIO0: gpio@40000700 { 2156bbc5476SHugh Blemings /* FIXME */ 2166bbc5476SHugh Blemings compatible = "ibm,gpio-440gp"; 2176bbc5476SHugh Blemings reg = <40000700 20>; 2186bbc5476SHugh Blemings }; 2196bbc5476SHugh Blemings 2206bbc5476SHugh Blemings ZMII0: emac-zmii@40000780 { 2216bbc5476SHugh Blemings device_type = "zgmii-interface"; 2226bbc5476SHugh Blemings compatible = "ibm,zmii-440gx", "ibm,zmii"; 2236bbc5476SHugh Blemings reg = <40000780 c>; 2246bbc5476SHugh Blemings }; 2256bbc5476SHugh Blemings 2266bbc5476SHugh Blemings RGMII0: emac-rgmii@40000790 { 2276bbc5476SHugh Blemings device_type = "rgmii-interface"; 2286bbc5476SHugh Blemings compatible = "ibm,rgmii"; 2296bbc5476SHugh Blemings reg = <40000790 8>; 2306bbc5476SHugh Blemings }; 2316bbc5476SHugh Blemings 2326bbc5476SHugh Blemings 2336bbc5476SHugh Blemings EMAC0: ethernet@40000800 { 2346bbc5476SHugh Blemings unused = <1>; 2356bbc5476SHugh Blemings linux,network-index = <2>; 2366bbc5476SHugh Blemings device_type = "network"; 2376bbc5476SHugh Blemings compatible = "ibm,emac-440gx", "ibm,emac4"; 2386bbc5476SHugh Blemings interrupt-parent = <&UIC1>; 2396bbc5476SHugh Blemings interrupts = <1c 4 1d 4>; 2406bbc5476SHugh Blemings reg = <40000800 70>; 2416bbc5476SHugh Blemings local-mac-address = [000000000000]; // Filled in by zImage 2426bbc5476SHugh Blemings mal-device = <&MAL0>; 2436bbc5476SHugh Blemings mal-tx-channel = <0>; 2446bbc5476SHugh Blemings mal-rx-channel = <0>; 2456bbc5476SHugh Blemings cell-index = <0>; 2466bbc5476SHugh Blemings max-frame-size = <5dc>; 2476bbc5476SHugh Blemings rx-fifo-size = <1000>; 2486bbc5476SHugh Blemings tx-fifo-size = <800>; 2496bbc5476SHugh Blemings phy-mode = "rmii"; 2506bbc5476SHugh Blemings phy-map = <00000001>; 2516bbc5476SHugh Blemings zmii-device = <&ZMII0>; 2526bbc5476SHugh Blemings zmii-channel = <0>; 2536bbc5476SHugh Blemings }; 2546bbc5476SHugh Blemings EMAC1: ethernet@40000900 { 2556bbc5476SHugh Blemings unused = <1>; 2566bbc5476SHugh Blemings linux,network-index = <3>; 2576bbc5476SHugh Blemings device_type = "network"; 2586bbc5476SHugh Blemings compatible = "ibm,emac-440gx", "ibm,emac4"; 2596bbc5476SHugh Blemings interrupt-parent = <&UIC1>; 2606bbc5476SHugh Blemings interrupts = <1e 4 1f 4>; 2616bbc5476SHugh Blemings reg = <40000900 70>; 2626bbc5476SHugh Blemings local-mac-address = [000000000000]; // Filled in by zImage 2636bbc5476SHugh Blemings mal-device = <&MAL0>; 2646bbc5476SHugh Blemings mal-tx-channel = <1>; 2656bbc5476SHugh Blemings mal-rx-channel = <1>; 2666bbc5476SHugh Blemings cell-index = <1>; 2676bbc5476SHugh Blemings max-frame-size = <5dc>; 2686bbc5476SHugh Blemings rx-fifo-size = <1000>; 2696bbc5476SHugh Blemings tx-fifo-size = <800>; 2706bbc5476SHugh Blemings phy-mode = "rmii"; 2716bbc5476SHugh Blemings phy-map = <00000001>; 2726bbc5476SHugh Blemings zmii-device = <&ZMII0>; 2736bbc5476SHugh Blemings zmii-channel = <1>; 2746bbc5476SHugh Blemings }; 2756bbc5476SHugh Blemings 2766bbc5476SHugh Blemings EMAC2: ethernet@40000c00 { 2776bbc5476SHugh Blemings linux,network-index = <0>; 2786bbc5476SHugh Blemings device_type = "network"; 2796bbc5476SHugh Blemings compatible = "ibm,emac-440gx", "ibm,emac4"; 2806bbc5476SHugh Blemings interrupt-parent = <&UIC2>; 2816bbc5476SHugh Blemings interrupts = <0 4 1 4>; 2826bbc5476SHugh Blemings reg = <40000c00 70>; 2836bbc5476SHugh Blemings local-mac-address = [000000000000]; // Filled in by zImage 2846bbc5476SHugh Blemings mal-device = <&MAL0>; 2856bbc5476SHugh Blemings mal-tx-channel = <2>; 2866bbc5476SHugh Blemings mal-rx-channel = <2>; 2876bbc5476SHugh Blemings cell-index = <2>; 2886bbc5476SHugh Blemings max-frame-size = <5dc>; 2896bbc5476SHugh Blemings rx-fifo-size = <1000>; 2906bbc5476SHugh Blemings tx-fifo-size = <800>; 2916bbc5476SHugh Blemings phy-mode = "rgmii"; 2926bbc5476SHugh Blemings phy-map = <00000001>; 2936bbc5476SHugh Blemings rgmii-device = <&RGMII0>; 2946bbc5476SHugh Blemings rgmii-channel = <0>; 2956bbc5476SHugh Blemings zmii-device = <&ZMII0>; 2966bbc5476SHugh Blemings zmii-channel = <2>; 2976bbc5476SHugh Blemings }; 2986bbc5476SHugh Blemings 2996bbc5476SHugh Blemings EMAC3: ethernet@40000e00 { 3006bbc5476SHugh Blemings linux,network-index = <1>; 3016bbc5476SHugh Blemings device_type = "network"; 3026bbc5476SHugh Blemings compatible = "ibm,emac-440gx", "ibm,emac4"; 3036bbc5476SHugh Blemings interrupt-parent = <&UIC2>; 3046bbc5476SHugh Blemings interrupts = <2 4 3 4>; 3056bbc5476SHugh Blemings reg = <40000e00 70>; 3066bbc5476SHugh Blemings local-mac-address = [000000000000]; // Filled in by zImage 3076bbc5476SHugh Blemings mal-device = <&MAL0>; 3086bbc5476SHugh Blemings mal-tx-channel = <3>; 3096bbc5476SHugh Blemings mal-rx-channel = <3>; 3106bbc5476SHugh Blemings cell-index = <3>; 3116bbc5476SHugh Blemings max-frame-size = <5dc>; 3126bbc5476SHugh Blemings rx-fifo-size = <1000>; 3136bbc5476SHugh Blemings tx-fifo-size = <800>; 3146bbc5476SHugh Blemings phy-mode = "rgmii"; 3156bbc5476SHugh Blemings phy-map = <00000003>; 3166bbc5476SHugh Blemings rgmii-device = <&RGMII0>; 3176bbc5476SHugh Blemings rgmii-channel = <1>; 3186bbc5476SHugh Blemings zmii-device = <&ZMII0>; 3196bbc5476SHugh Blemings zmii-channel = <3>; 3206bbc5476SHugh Blemings }; 3216bbc5476SHugh Blemings 3226bbc5476SHugh Blemings 3236bbc5476SHugh Blemings GPT0: gpt@40000a00 { 3246bbc5476SHugh Blemings /* FIXME */ 3256bbc5476SHugh Blemings reg = <40000a00 d4>; 3266bbc5476SHugh Blemings interrupt-parent = <&UIC0>; 3276bbc5476SHugh Blemings interrupts = <12 4 13 4 14 4 15 4 16 4>; 3286bbc5476SHugh Blemings }; 3296bbc5476SHugh Blemings 3306bbc5476SHugh Blemings }; 3316bbc5476SHugh Blemings 3326bbc5476SHugh Blemings PCIX0: pci@20ec00000 { 3336bbc5476SHugh Blemings device_type = "pci"; 3346bbc5476SHugh Blemings #interrupt-cells = <1>; 3356bbc5476SHugh Blemings #size-cells = <2>; 3366bbc5476SHugh Blemings #address-cells = <3>; 3376bbc5476SHugh Blemings compatible = "ibm,plb440gp-pcix", "ibm,plb-pcix"; 3386bbc5476SHugh Blemings primary; 3396bbc5476SHugh Blemings large-inbound-windows; 3406bbc5476SHugh Blemings enable-msi-hole; 3416bbc5476SHugh Blemings reg = <2 0ec00000 8 /* Config space access */ 3426bbc5476SHugh Blemings 0 0 0 /* no IACK cycles */ 3436bbc5476SHugh Blemings 2 0ed00000 4 /* Special cycles */ 3446bbc5476SHugh Blemings 2 0ec80000 100 /* Internal registers */ 3456bbc5476SHugh Blemings 2 0ec80100 fc>; /* Internal messaging registers */ 3466bbc5476SHugh Blemings 3476bbc5476SHugh Blemings /* Outbound ranges, one memory and one IO, 3486bbc5476SHugh Blemings * later cannot be changed 3496bbc5476SHugh Blemings */ 3506bbc5476SHugh Blemings ranges = <02000000 0 80000000 00000003 80000000 0 80000000 3516bbc5476SHugh Blemings 01000000 0 00000000 00000002 08000000 0 00010000>; 3526bbc5476SHugh Blemings 3536bbc5476SHugh Blemings /* Inbound 2GB range starting at 0 */ 3546bbc5476SHugh Blemings dma-ranges = <42000000 0 0 0 0 0 80000000>; 3556bbc5476SHugh Blemings 3566bbc5476SHugh Blemings interrupt-map-mask = <f800 0 0 7>; 3576bbc5476SHugh Blemings interrupt-map = < 3586bbc5476SHugh Blemings /* IDSEL 1 */ 3596bbc5476SHugh Blemings 0800 0 0 1 &UIC0 17 8 3606bbc5476SHugh Blemings 0800 0 0 2 &UIC0 18 8 3616bbc5476SHugh Blemings 0800 0 0 3 &UIC0 19 8 3626bbc5476SHugh Blemings 0800 0 0 4 &UIC0 1a 8 3636bbc5476SHugh Blemings 3646bbc5476SHugh Blemings /* IDSEL 2 */ 3656bbc5476SHugh Blemings 1000 0 0 1 &UIC0 18 8 3666bbc5476SHugh Blemings 1000 0 0 2 &UIC0 19 8 3676bbc5476SHugh Blemings 1000 0 0 3 &UIC0 1a 8 3686bbc5476SHugh Blemings 1000 0 0 4 &UIC0 17 8 3696bbc5476SHugh Blemings >; 3706bbc5476SHugh Blemings }; 3716bbc5476SHugh Blemings }; 3726bbc5476SHugh Blemings 3736bbc5476SHugh Blemings chosen { 3746bbc5476SHugh Blemings linux,stdout-path = "/plb/opb/serial@40000300"; 3756bbc5476SHugh Blemings }; 3766bbc5476SHugh Blemings}; 377