summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/arch/powerpc/platforms/44x
diff options
context:
space:
mode:
authorSrikant Patnaik2015-01-11 12:28:04 +0530
committerSrikant Patnaik2015-01-11 12:28:04 +0530
commit871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch)
tree8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/arch/powerpc/platforms/44x
parent9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff)
downloadFOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized. Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/arch/powerpc/platforms/44x')
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/44x.h11
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/Kconfig329
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/Makefile13
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/canyonlands.c134
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/currituck.c204
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/ebony.c70
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/idle.c67
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/iss4xx.c168
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/misc_44x.S46
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/ppc44x_simple.c91
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/sam440ep.c79
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex.c62
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex_ml510.c29
-rw-r--r--ANDROID_3.4.5/arch/powerpc/platforms/44x/warp.c320
14 files changed, 0 insertions, 1623 deletions
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/44x.h b/ANDROID_3.4.5/arch/powerpc/platforms/44x/44x.h
deleted file mode 100644
index 63f703ec..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/44x.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __POWERPC_PLATFORMS_44X_44X_H
-#define __POWERPC_PLATFORMS_44X_44X_H
-
-extern u8 as1_readb(volatile u8 __iomem *addr);
-extern void as1_writeb(u8 data, volatile u8 __iomem *addr);
-
-#define GPIO0_OSRH 0xC
-#define GPIO0_TSRH 0x14
-#define GPIO0_ISR1H 0x34
-
-#endif /* __POWERPC_PLATFORMS_44X_44X_H */
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/Kconfig b/ANDROID_3.4.5/arch/powerpc/platforms/44x/Kconfig
deleted file mode 100644
index 2e4e64ab..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/Kconfig
+++ /dev/null
@@ -1,329 +0,0 @@
-config PPC_47x
- bool "Support for 47x variant"
- depends on 44x
- default n
- select MPIC
- help
- This option enables support for the 47x family of processors and is
- not currently compatible with other 44x or 46x varients
-
-config BAMBOO
- bool "Bamboo"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440EP
- select PCI
- help
- This option enables support for the IBM PPC440EP evaluation board.
-
-config BLUESTONE
- bool "Bluestone"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select APM821xx
- select PPC4xx_PCI_EXPRESS
- select IBM_EMAC_RGMII
- help
- This option enables support for the APM APM821xx Evaluation board.
-
-config EBONY
- bool "Ebony"
- depends on 44x
- default y
- select 440GP
- select PCI
- select OF_RTC
- help
- This option enables support for the IBM PPC440GP evaluation board.
-
-config SAM440EP
- bool "Sam440ep"
- depends on 44x
- default n
- select 440EP
- select PCI
- help
- This option enables support for the ACube Sam440ep board.
-
-config SEQUOIA
- bool "Sequoia"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440EPX
- help
- This option enables support for the AMCC PPC440EPX evaluation board.
-
-config TAISHAN
- bool "Taishan"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440GX
- select PCI
- help
- This option enables support for the AMCC PPC440GX "Taishan"
- evaluation board.
-
-config KATMAI
- bool "Katmai"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440SPe
- select PCI
- select PPC4xx_PCI_EXPRESS
- select PCI_MSI
- select PPC4xx_MSI
- help
- This option enables support for the AMCC PPC440SPe evaluation board.
-
-config RAINIER
- bool "Rainier"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440GRX
- select PCI
- help
- This option enables support for the AMCC PPC440GRX evaluation board.
-
-config WARP
- bool "PIKA Warp"
- depends on 44x
- default n
- select 440EP
- help
- This option enables support for the PIKA Warp(tm) Appliance. The Warp
- is a small computer replacement with up to 9 ports of FXO/FXS plus VOIP
- stations and trunks.
-
- See http://www.pikatechnologies.com/ and follow the "PIKA for Computer
- Telephony Developers" link for more information.
-
-config ARCHES
- bool "Arches"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 460EX # Odd since it uses 460GT but the effects are the same
- select PCI
- select PPC4xx_PCI_EXPRESS
- help
- This option enables support for the AMCC Dual PPC460GT evaluation board.
-
-config CANYONLANDS
- bool "Canyonlands"
- depends on 44x
- default n
- select 460EX
- select PCI
- select PPC4xx_PCI_EXPRESS
- select PCI_MSI
- select PPC4xx_MSI
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII
- help
- This option enables support for the AMCC PPC460EX evaluation board.
-
-config GLACIER
- bool "Glacier"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 460EX # Odd since it uses 460GT but the effects are the same
- select PCI
- select PPC4xx_PCI_EXPRESS
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII
- help
- This option enables support for the AMCC PPC460GT evaluation board.
-
-config REDWOOD
- bool "Redwood"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 460SX
- select PCI
- select PPC4xx_PCI_EXPRESS
- select PCI_MSI
- select PPC4xx_MSI
- help
- This option enables support for the AMCC PPC460SX Redwood board.
-
-config EIGER
- bool "Eiger"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 460SX
- select PCI
- select PPC4xx_PCI_EXPRESS
- select IBM_EMAC_RGMII
- help
- This option enables support for the AMCC PPC460SX evaluation board.
-
-config YOSEMITE
- bool "Yosemite"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440EP
- select PCI
- help
- This option enables support for the AMCC PPC440EP evaluation board.
-
-config ISS4xx
- bool "ISS 4xx Simulator"
- depends on (44x || 40x)
- default n
- select 405GP if 40x
- select 440GP if 44x && !PPC_47x
- select PPC_FPU
- select OF_RTC
- help
- This option enables support for the IBM ISS simulation environment
-
-config CURRITUCK
- bool "IBM Currituck (476fpe) Support"
- depends on PPC_47x
- default n
- select SWIOTLB
- select 476FPE
- select PPC4xx_PCI_EXPRESS
- help
- This option enables support for the IBM Currituck (476fpe) evaluation board
-
-config ICON
- bool "Icon"
- depends on 44x
- default n
- select PPC44x_SIMPLE
- select 440SPe
- select PCI
- select PPC4xx_PCI_EXPRESS
- help
- This option enables support for the AMCC PPC440SPe evaluation board.
-
-config XILINX_VIRTEX440_GENERIC_BOARD
- bool "Generic Xilinx Virtex 5 FXT board support"
- depends on 44x
- default n
- select XILINX_VIRTEX_5_FXT
- help
- This option enables generic support for Xilinx Virtex based boards
- that use a 440 based processor in the Virtex 5 FXT FPGA architecture.
-
- The generic virtex board support matches any device tree which
- specifies 'xlnx,virtex440' in its compatible field. This includes
- the Xilinx ML5xx reference designs using the powerpc core.
-
- Most Virtex 5 designs should use this unless it needs to do some
- special configuration at board probe time.
-
-config XILINX_ML510
- bool "Xilinx ML510 extra support"
- depends on XILINX_VIRTEX440_GENERIC_BOARD
- select PPC_PCI_CHOICE
- select XILINX_PCI if PCI
- select PPC_INDIRECT_PCI if PCI
- select PPC_I8259 if PCI
- help
- This option enables extra support for features on the Xilinx ML510
- board. The ML510 has a PCI bus with ALI south bridge.
-
-config PPC44x_SIMPLE
- bool "Simple PowerPC 44x board support"
- depends on 44x
- default n
- help
- This option enables the simple PowerPC 44x platform support.
-
-config PPC4xx_GPIO
- bool "PPC4xx GPIO support"
- depends on 44x
- select ARCH_REQUIRE_GPIOLIB
- select GENERIC_GPIO
- help
- Enable gpiolib support for ppc440 based boards
-
-# 44x specific CPU modules, selected based on the board above.
-config 440EP
- bool
- select PPC_FPU
- select IBM440EP_ERR42
- select IBM_EMAC_ZMII
- select USB_ARCH_HAS_OHCI
-
-config 440EPX
- bool
- select PPC_FPU
- select IBM_EMAC_EMAC4
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII
-
-config 440GRX
- bool
- select IBM_EMAC_EMAC4
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII
-
-config 440GP
- bool
- select IBM_EMAC_ZMII
-
-config 440GX
- bool
- select IBM_EMAC_EMAC4
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII #test only
- select IBM_EMAC_TAH #test only
-
-config 440SP
- bool
-
-config 440SPe
- bool
- select IBM_EMAC_EMAC4
-
-config 460EX
- bool
- select PPC_FPU
- select IBM_EMAC_EMAC4
- select IBM_EMAC_TAH
-
-config 460SX
- bool
- select PPC_FPU
- select IBM_EMAC_EMAC4
- select IBM_EMAC_RGMII
- select IBM_EMAC_ZMII
- select IBM_EMAC_TAH
-
-config 476FPE
- bool
- select PPC_FPU
-
-config APM821xx
- bool
- select PPC_FPU
- select IBM_EMAC_EMAC4
- select IBM_EMAC_TAH
-
-# 44x errata/workaround config symbols, selected by the CPU models above
-config IBM440EP_ERR42
- bool
-
-# Xilinx specific config options.
-config XILINX_VIRTEX
- bool
- select DEFAULT_UIMAGE
-
-# Xilinx Virtex 5 FXT FPGA architecture, selected by a Xilinx board above
-config XILINX_VIRTEX_5_FXT
- bool
- select XILINX_VIRTEX
-
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/Makefile b/ANDROID_3.4.5/arch/powerpc/platforms/44x/Makefile
deleted file mode 100644
index d03833ab..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-obj-$(CONFIG_44x) += misc_44x.o
-ifneq ($(CONFIG_PPC4xx_CPM),y)
-obj-$(CONFIG_44x) += idle.o
-endif
-obj-$(CONFIG_PPC44x_SIMPLE) += ppc44x_simple.o
-obj-$(CONFIG_EBONY) += ebony.o
-obj-$(CONFIG_SAM440EP) += sam440ep.o
-obj-$(CONFIG_WARP) += warp.o
-obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o
-obj-$(CONFIG_XILINX_ML510) += virtex_ml510.o
-obj-$(CONFIG_ISS4xx) += iss4xx.o
-obj-$(CONFIG_CANYONLANDS)+= canyonlands.o
-obj-$(CONFIG_CURRITUCK) += currituck.o
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/canyonlands.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/canyonlands.c
deleted file mode 100644
index e300dd4c..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/canyonlands.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * This contain platform specific code for APM PPC460EX based Canyonlands
- * board.
- *
- * Copyright (c) 2010, Applied Micro Circuits Corporation
- * Author: Rupjyoti Sarmah <rsarmah@apm.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <asm/pci-bridge.h>
-#include <asm/ppc4xx.h>
-#include <asm/udbg.h>
-#include <asm/uic.h>
-#include <linux/of_platform.h>
-#include <linux/delay.h>
-#include "44x.h"
-
-#define BCSR_USB_EN 0x11
-
-static __initdata struct of_device_id ppc460ex_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- { .compatible = "simple-bus", },
- {},
-};
-
-static int __init ppc460ex_device_probe(void)
-{
- of_platform_bus_probe(NULL, ppc460ex_of_bus, NULL);
-
- return 0;
-}
-machine_device_initcall(canyonlands, ppc460ex_device_probe);
-
-/* Using this code only for the Canyonlands board. */
-
-static int __init ppc460ex_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
- if (of_flat_dt_is_compatible(root, "amcc,canyonlands")) {
- pci_set_flags(PCI_REASSIGN_ALL_RSRC);
- return 1;
- }
- return 0;
-}
-
-/* USB PHY fixup code on Canyonlands kit. */
-
-static int __init ppc460ex_canyonlands_fixup(void)
-{
- u8 __iomem *bcsr ;
- void __iomem *vaddr;
- struct device_node *np;
- int ret = 0;
-
- np = of_find_compatible_node(NULL, NULL, "amcc,ppc460ex-bcsr");
- if (!np) {
- printk(KERN_ERR "failed did not find amcc, ppc460ex bcsr node\n");
- return -ENODEV;
- }
-
- bcsr = of_iomap(np, 0);
- of_node_put(np);
-
- if (!bcsr) {
- printk(KERN_CRIT "Could not remap bcsr\n");
- ret = -ENODEV;
- goto err_bcsr;
- }
-
- np = of_find_compatible_node(NULL, NULL, "ibm,ppc4xx-gpio");
- if (!np) {
- printk(KERN_ERR "failed did not find ibm,ppc4xx-gpio node\n");
- return -ENODEV;
- }
-
- vaddr = of_iomap(np, 0);
- of_node_put(np);
-
- if (!vaddr) {
- printk(KERN_CRIT "Could not get gpio node address\n");
- ret = -ENODEV;
- goto err_gpio;
- }
- /* Disable USB, through the BCSR7 bits */
- setbits8(&bcsr[7], BCSR_USB_EN);
-
- /* Wait for a while after reset */
- msleep(100);
-
- /* Enable USB here */
- clrbits8(&bcsr[7], BCSR_USB_EN);
-
- /*
- * Configure multiplexed gpio16 and gpio19 as alternate1 output
- * source after USB reset. In this configuration gpio16 will be
- * USB2HStop and gpio19 will be USB2DStop. For more details refer to
- * table 34-7 of PPC460EX user manual.
- */
- setbits32((vaddr + GPIO0_OSRH), 0x42000000);
- setbits32((vaddr + GPIO0_TSRH), 0x42000000);
-err_gpio:
- iounmap(vaddr);
-err_bcsr:
- iounmap(bcsr);
- return ret;
-}
-machine_device_initcall(canyonlands, ppc460ex_canyonlands_fixup);
-define_machine(canyonlands) {
- .name = "Canyonlands",
- .probe = ppc460ex_probe,
- .progress = udbg_progress,
- .init_IRQ = uic_init_tree,
- .get_irq = uic_get_irq,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/currituck.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/currituck.c
deleted file mode 100644
index 583e67fe..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/currituck.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Currituck board specific routines
- *
- * Copyright © 2011 Tony Breeds IBM Corporation
- *
- * Based on earlier code:
- * Matt Porter <mporter@kernel.crashing.org>
- * Copyright 2002-2005 MontaVista Software Inc.
- *
- * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
- * Copyright (c) 2003-2005 Zultys Technologies
- *
- * Rewritten and ported to the merged powerpc tree:
- * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
- * Copyright © 2011 David Kliekamp IBM Corporation
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#include <linux/init.h>
-#include <linux/memblock.h>
-#include <linux/of.h>
-#include <linux/of_platform.h>
-#include <linux/rtc.h>
-
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/udbg.h>
-#include <asm/time.h>
-#include <asm/uic.h>
-#include <asm/ppc4xx.h>
-#include <asm/mpic.h>
-#include <asm/mmu.h>
-
-#include <linux/pci.h>
-
-static __initdata struct of_device_id ppc47x_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,plb6", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- {},
-};
-
-/* The EEPROM is missing and the default values are bogus. This forces USB in
- * to EHCI mode */
-static void __devinit quirk_ppc_currituck_usb_fixup(struct pci_dev *dev)
-{
- if (of_machine_is_compatible("ibm,currituck")) {
- pci_write_config_dword(dev, 0xe0, 0x0114231f);
- pci_write_config_dword(dev, 0xe4, 0x00006c40);
- }
-}
-DECLARE_PCI_FIXUP_HEADER(0x1033, 0x0035, quirk_ppc_currituck_usb_fixup);
-
-static int __init ppc47x_device_probe(void)
-{
- of_platform_bus_probe(NULL, ppc47x_of_bus, NULL);
-
- return 0;
-}
-machine_device_initcall(ppc47x, ppc47x_device_probe);
-
-/* We can have either UICs or MPICs */
-static void __init ppc47x_init_irq(void)
-{
- struct device_node *np;
-
- /* Find top level interrupt controller */
- for_each_node_with_property(np, "interrupt-controller") {
- if (of_get_property(np, "interrupts", NULL) == NULL)
- break;
- }
- if (np == NULL)
- panic("Can't find top level interrupt controller");
-
- /* Check type and do appropriate initialization */
- if (of_device_is_compatible(np, "chrp,open-pic")) {
- /* The MPIC driver will get everything it needs from the
- * device-tree, just pass 0 to all arguments
- */
- struct mpic *mpic =
- mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC ");
- BUG_ON(mpic == NULL);
- mpic_init(mpic);
- ppc_md.get_irq = mpic_get_irq;
- } else
- panic("Unrecognized top level interrupt controller");
-}
-
-#ifdef CONFIG_SMP
-static void __cpuinit smp_ppc47x_setup_cpu(int cpu)
-{
- mpic_setup_this_cpu();
-}
-
-static int __cpuinit smp_ppc47x_kick_cpu(int cpu)
-{
- struct device_node *cpunode = of_get_cpu_node(cpu, NULL);
- const u64 *spin_table_addr_prop;
- u32 *spin_table;
- extern void start_secondary_47x(void);
-
- BUG_ON(cpunode == NULL);
-
- /* Assume spin table. We could test for the enable-method in
- * the device-tree but currently there's little point as it's
- * our only supported method
- */
- spin_table_addr_prop =
- of_get_property(cpunode, "cpu-release-addr", NULL);
-
- if (spin_table_addr_prop == NULL) {
- pr_err("CPU%d: Can't start, missing cpu-release-addr !\n",
- cpu);
- return 1;
- }
-
- /* Assume it's mapped as part of the linear mapping. This is a bit
- * fishy but will work fine for now
- *
- * XXX: Is there any reason to assume differently?
- */
- spin_table = (u32 *)__va(*spin_table_addr_prop);
- pr_debug("CPU%d: Spin table mapped at %p\n", cpu, spin_table);
-
- spin_table[3] = cpu;
- smp_wmb();
- spin_table[1] = __pa(start_secondary_47x);
- mb();
-
- return 0;
-}
-
-static struct smp_ops_t ppc47x_smp_ops = {
- .probe = smp_mpic_probe,
- .message_pass = smp_mpic_message_pass,
- .setup_cpu = smp_ppc47x_setup_cpu,
- .kick_cpu = smp_ppc47x_kick_cpu,
- .give_timebase = smp_generic_give_timebase,
- .take_timebase = smp_generic_take_timebase,
-};
-
-static void __init ppc47x_smp_init(void)
-{
- if (mmu_has_feature(MMU_FTR_TYPE_47x))
- smp_ops = &ppc47x_smp_ops;
-}
-
-#else /* CONFIG_SMP */
-static void __init ppc47x_smp_init(void) { }
-#endif /* CONFIG_SMP */
-
-static void __init ppc47x_setup_arch(void)
-{
-
- /* No need to check the DMA config as we /know/ our windows are all of
- * RAM. Lets hope that doesn't change */
-#ifdef CONFIG_SWIOTLB
- if (memblock_end_of_DRAM() > 0xffffffff) {
- ppc_swiotlb_enable = 1;
- set_pci_dma_ops(&swiotlb_dma_ops);
- ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
- }
-#endif
- ppc47x_smp_init();
-}
-
-/*
- * Called very early, MMU is off, device-tree isn't unflattened
- */
-static int __init ppc47x_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "ibm,currituck"))
- return 0;
-
- return 1;
-}
-
-/* Use USB controller should have been hardware swizzled but it wasn't :( */
-static void ppc47x_pci_irq_fixup(struct pci_dev *dev)
-{
- if (dev->vendor == 0x1033 && (dev->device == 0x0035 ||
- dev->device == 0x00e0)) {
- dev->irq = irq_create_mapping(NULL, 47);
- pr_info("%s: Mapping irq 47 %d\n", __func__, dev->irq);
- }
-}
-
-define_machine(ppc47x) {
- .name = "PowerPC 47x",
- .probe = ppc47x_probe,
- .progress = udbg_progress,
- .init_IRQ = ppc47x_init_irq,
- .setup_arch = ppc47x_setup_arch,
- .pci_irq_fixup = ppc47x_pci_irq_fixup,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/ebony.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/ebony.c
deleted file mode 100644
index 6a4232bb..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/ebony.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Ebony board specific routines
- *
- * Matt Porter <mporter@kernel.crashing.org>
- * Copyright 2002-2005 MontaVista Software Inc.
- *
- * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
- * Copyright (c) 2003-2005 Zultys Technologies
- *
- * Rewritten and ported to the merged powerpc tree:
- * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#include <linux/init.h>
-#include <linux/of_platform.h>
-#include <linux/rtc.h>
-
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/udbg.h>
-#include <asm/time.h>
-#include <asm/uic.h>
-#include <asm/pci-bridge.h>
-#include <asm/ppc4xx.h>
-
-static __initdata struct of_device_id ebony_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- {},
-};
-
-static int __init ebony_device_probe(void)
-{
- of_platform_bus_probe(NULL, ebony_of_bus, NULL);
- of_instantiate_rtc();
-
- return 0;
-}
-machine_device_initcall(ebony, ebony_device_probe);
-
-/*
- * Called very early, MMU is off, device-tree isn't unflattened
- */
-static int __init ebony_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
- return 0;
-
- pci_set_flags(PCI_REASSIGN_ALL_RSRC);
-
- return 1;
-}
-
-define_machine(ebony) {
- .name = "Ebony",
- .probe = ebony_probe,
- .progress = udbg_progress,
- .init_IRQ = uic_init_tree,
- .get_irq = uic_get_irq,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/idle.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/idle.c
deleted file mode 100644
index 7a81f921..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/idle.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2008 IBM Corp.
- *
- * Based on arch/powerpc/platforms/pasemi/idle.c:
- * Copyright (C) 2006-2007 PA Semi, Inc
- *
- * Added by: Jerone Young <jyoung5@us.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <linux/of.h>
-#include <linux/kernel.h>
-#include <asm/machdep.h>
-
-static int mode_spin;
-
-static void ppc44x_idle(void)
-{
- unsigned long msr_save;
-
- msr_save = mfmsr();
- /* set wait state MSR */
- mtmsr(msr_save|MSR_WE|MSR_EE|MSR_CE|MSR_DE);
- isync();
- /* return to initial state */
- mtmsr(msr_save);
- isync();
-}
-
-int __init ppc44x_idle_init(void)
-{
- if (!mode_spin) {
- /* If we are not setting spin mode
- then we set to wait mode */
- ppc_md.power_save = &ppc44x_idle;
- }
-
- return 0;
-}
-
-arch_initcall(ppc44x_idle_init);
-
-static int __init idle_param(char *p)
-{
-
- if (!strcmp("spin", p)) {
- mode_spin = 1;
- ppc_md.power_save = NULL;
- }
-
- return 0;
-}
-
-early_param("idle", idle_param);
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/iss4xx.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/iss4xx.c
deleted file mode 100644
index a28a8629..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/iss4xx.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * PPC476 board specific routines
- *
- * Copyright 2010 Torez Smith, IBM Corporation.
- *
- * Based on earlier code:
- * Matt Porter <mporter@kernel.crashing.org>
- * Copyright 2002-2005 MontaVista Software Inc.
- *
- * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
- * Copyright (c) 2003-2005 Zultys Technologies
- *
- * Rewritten and ported to the merged powerpc tree:
- * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#include <linux/init.h>
-#include <linux/of_platform.h>
-#include <linux/rtc.h>
-
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/udbg.h>
-#include <asm/time.h>
-#include <asm/uic.h>
-#include <asm/ppc4xx.h>
-#include <asm/mpic.h>
-#include <asm/mmu.h>
-
-static __initdata struct of_device_id iss4xx_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,plb6", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- {},
-};
-
-static int __init iss4xx_device_probe(void)
-{
- of_platform_bus_probe(NULL, iss4xx_of_bus, NULL);
- of_instantiate_rtc();
-
- return 0;
-}
-machine_device_initcall(iss4xx, iss4xx_device_probe);
-
-/* We can have either UICs or MPICs */
-static void __init iss4xx_init_irq(void)
-{
- struct device_node *np;
-
- /* Find top level interrupt controller */
- for_each_node_with_property(np, "interrupt-controller") {
- if (of_get_property(np, "interrupts", NULL) == NULL)
- break;
- }
- if (np == NULL)
- panic("Can't find top level interrupt controller");
-
- /* Check type and do appropriate initialization */
- if (of_device_is_compatible(np, "ibm,uic")) {
- uic_init_tree();
- ppc_md.get_irq = uic_get_irq;
-#ifdef CONFIG_MPIC
- } else if (of_device_is_compatible(np, "chrp,open-pic")) {
- /* The MPIC driver will get everything it needs from the
- * device-tree, just pass 0 to all arguments
- */
- struct mpic *mpic = mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC ");
- BUG_ON(mpic == NULL);
- mpic_init(mpic);
- ppc_md.get_irq = mpic_get_irq;
-#endif
- } else
- panic("Unrecognized top level interrupt controller");
-}
-
-#ifdef CONFIG_SMP
-static void __cpuinit smp_iss4xx_setup_cpu(int cpu)
-{
- mpic_setup_this_cpu();
-}
-
-static int __cpuinit smp_iss4xx_kick_cpu(int cpu)
-{
- struct device_node *cpunode = of_get_cpu_node(cpu, NULL);
- const u64 *spin_table_addr_prop;
- u32 *spin_table;
- extern void start_secondary_47x(void);
-
- BUG_ON(cpunode == NULL);
-
- /* Assume spin table. We could test for the enable-method in
- * the device-tree but currently there's little point as it's
- * our only supported method
- */
- spin_table_addr_prop = of_get_property(cpunode, "cpu-release-addr",
- NULL);
- if (spin_table_addr_prop == NULL) {
- pr_err("CPU%d: Can't start, missing cpu-release-addr !\n", cpu);
- return -ENOENT;
- }
-
- /* Assume it's mapped as part of the linear mapping. This is a bit
- * fishy but will work fine for now
- */
- spin_table = (u32 *)__va(*spin_table_addr_prop);
- pr_debug("CPU%d: Spin table mapped at %p\n", cpu, spin_table);
-
- spin_table[3] = cpu;
- smp_wmb();
- spin_table[1] = __pa(start_secondary_47x);
- mb();
-
- return 0;
-}
-
-static struct smp_ops_t iss_smp_ops = {
- .probe = smp_mpic_probe,
- .message_pass = smp_mpic_message_pass,
- .setup_cpu = smp_iss4xx_setup_cpu,
- .kick_cpu = smp_iss4xx_kick_cpu,
- .give_timebase = smp_generic_give_timebase,
- .take_timebase = smp_generic_take_timebase,
-};
-
-static void __init iss4xx_smp_init(void)
-{
- if (mmu_has_feature(MMU_FTR_TYPE_47x))
- smp_ops = &iss_smp_ops;
-}
-
-#else /* CONFIG_SMP */
-static void __init iss4xx_smp_init(void) { }
-#endif /* CONFIG_SMP */
-
-static void __init iss4xx_setup_arch(void)
-{
- iss4xx_smp_init();
-}
-
-/*
- * Called very early, MMU is off, device-tree isn't unflattened
- */
-static int __init iss4xx_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "ibm,iss-4xx"))
- return 0;
-
- return 1;
-}
-
-define_machine(iss4xx) {
- .name = "ISS-4xx",
- .probe = iss4xx_probe,
- .progress = udbg_progress,
- .init_IRQ = iss4xx_init_irq,
- .setup_arch = iss4xx_setup_arch,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/misc_44x.S b/ANDROID_3.4.5/arch/powerpc/platforms/44x/misc_44x.S
deleted file mode 100644
index dc12b800..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/misc_44x.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file contains miscellaneous low-level functions for PPC 44x.
- * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- *
- */
-
-#include <asm/reg.h>
-#include <asm/ppc_asm.h>
-
- .text
-
-/*
- * Do an IO access in AS1
- */
-_GLOBAL(as1_readb)
- mfmsr r7
- ori r0,r7,MSR_DS
- sync
- mtmsr r0
- sync
- isync
- lbz r3,0(r3)
- sync
- mtmsr r7
- sync
- isync
- blr
-
-_GLOBAL(as1_writeb)
- mfmsr r7
- ori r0,r7,MSR_DS
- sync
- mtmsr r0
- sync
- isync
- stb r3,0(r4)
- sync
- mtmsr r7
- sync
- isync
- blr
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/ppc44x_simple.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/ppc44x_simple.c
deleted file mode 100644
index 3ffb9154..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/ppc44x_simple.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Generic PowerPC 44x platform support
- *
- * Copyright 2008 IBM Corporation
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This implements simple platform support for PowerPC 44x chips. This is
- * mostly used for eval boards or other simple and "generic" 44x boards. If
- * your board has custom functions or hardware, then you will likely want to
- * implement your own board.c file to accommodate it.
- */
-
-#include <asm/machdep.h>
-#include <asm/pci-bridge.h>
-#include <asm/ppc4xx.h>
-#include <asm/prom.h>
-#include <asm/time.h>
-#include <asm/udbg.h>
-#include <asm/uic.h>
-
-#include <linux/init.h>
-#include <linux/of_platform.h>
-
-static __initdata struct of_device_id ppc44x_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- { .compatible = "simple-bus", },
- {},
-};
-
-static int __init ppc44x_device_probe(void)
-{
- of_platform_bus_probe(NULL, ppc44x_of_bus, NULL);
-
- return 0;
-}
-machine_device_initcall(ppc44x_simple, ppc44x_device_probe);
-
-/* This is the list of boards that can be supported by this simple
- * platform code. This does _not_ mean the boards are compatible,
- * as they most certainly are not from a device tree perspective.
- * However, their differences are handled by the device tree and the
- * drivers and therefore they don't need custom board support files.
- *
- * Again, if your board needs to do things differently then create a
- * board.c file for it rather than adding it to this list.
- */
-static char *board[] __initdata = {
- "amcc,arches",
- "amcc,bamboo",
- "apm,bluestone",
- "amcc,glacier",
- "ibm,ebony",
- "amcc,eiger",
- "amcc,katmai",
- "amcc,rainier",
- "amcc,redwood",
- "amcc,sequoia",
- "amcc,taishan",
- "amcc,yosemite",
- "mosaixtech,icon"
-};
-
-static int __init ppc44x_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
- int i = 0;
-
- for (i = 0; i < ARRAY_SIZE(board); i++) {
- if (of_flat_dt_is_compatible(root, board[i])) {
- pci_set_flags(PCI_REASSIGN_ALL_RSRC);
- return 1;
- }
- }
-
- return 0;
-}
-
-define_machine(ppc44x_simple) {
- .name = "PowerPC 44x Platform",
- .probe = ppc44x_probe,
- .progress = udbg_progress,
- .init_IRQ = uic_init_tree,
- .get_irq = uic_get_irq,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/sam440ep.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/sam440ep.c
deleted file mode 100644
index 9e09b835..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/sam440ep.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Sam440ep board specific routines based off bamboo.c code
- * original copyrights below
- *
- * Wade Farnsworth <wfarnsworth@mvista.com>
- * Copyright 2004 MontaVista Software Inc.
- *
- * Rewritten and ported to the merged powerpc tree:
- * Josh Boyer <jwboyer@linux.vnet.ibm.com>
- * Copyright 2007 IBM Corporation
- *
- * Modified from bamboo.c for sam440ep:
- * Copyright 2008 Giuseppe Coviello <gicoviello@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-#include <linux/init.h>
-#include <linux/of_platform.h>
-
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/udbg.h>
-#include <asm/time.h>
-#include <asm/uic.h>
-#include <asm/pci-bridge.h>
-#include <asm/ppc4xx.h>
-#include <linux/i2c.h>
-
-static __initdata struct of_device_id sam440ep_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- {},
-};
-
-static int __init sam440ep_device_probe(void)
-{
- of_platform_bus_probe(NULL, sam440ep_of_bus, NULL);
-
- return 0;
-}
-machine_device_initcall(sam440ep, sam440ep_device_probe);
-
-static int __init sam440ep_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "acube,sam440ep"))
- return 0;
-
- pci_set_flags(PCI_REASSIGN_ALL_RSRC);
-
- return 1;
-}
-
-define_machine(sam440ep) {
- .name = "Sam440ep",
- .probe = sam440ep_probe,
- .progress = udbg_progress,
- .init_IRQ = uic_init_tree,
- .get_irq = uic_get_irq,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
-
-static struct i2c_board_info sam440ep_rtc_info = {
- .type = "m41st85",
- .addr = 0x68,
- .irq = -1,
-};
-
-static int sam440ep_setup_rtc(void)
-{
- return i2c_register_board_info(0, &sam440ep_rtc_info, 1);
-}
-machine_device_initcall(sam440ep, sam440ep_setup_rtc);
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex.c
deleted file mode 100644
index cf96ccaa..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Xilinx Virtex 5FXT based board support, derived from
- * the Xilinx Virtex (IIpro & 4FX) based board support
- *
- * Copyright 2007 Secret Lab Technologies Ltd.
- * Copyright 2008 Xilinx, Inc.
- *
- * This file is licensed under the terms of the GNU General Public License
- * version 2. This program is licensed "as is" without any warranty of any
- * kind, whether express or implied.
- */
-
-#include <linux/init.h>
-#include <linux/of_platform.h>
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/time.h>
-#include <asm/xilinx_intc.h>
-#include <asm/xilinx_pci.h>
-#include <asm/reg.h>
-#include <asm/ppc4xx.h>
-#include "44x.h"
-
-static struct of_device_id xilinx_of_bus_ids[] __initdata = {
- { .compatible = "simple-bus", },
- { .compatible = "xlnx,plb-v46-1.00.a", },
- { .compatible = "xlnx,plb-v46-1.02.a", },
- { .compatible = "xlnx,plb-v34-1.01.a", },
- { .compatible = "xlnx,plb-v34-1.02.a", },
- { .compatible = "xlnx,opb-v20-1.10.c", },
- { .compatible = "xlnx,dcr-v29-1.00.a", },
- { .compatible = "xlnx,compound", },
- {}
-};
-
-static int __init virtex_device_probe(void)
-{
- of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
-
- return 0;
-}
-machine_device_initcall(virtex, virtex_device_probe);
-
-static int __init virtex_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "xlnx,virtex440"))
- return 0;
-
- return 1;
-}
-
-define_machine(virtex) {
- .name = "Xilinx Virtex440",
- .probe = virtex_probe,
- .setup_arch = xilinx_pci_init,
- .init_IRQ = xilinx_intc_init_tree,
- .get_irq = xilinx_intc_get_irq,
- .calibrate_decr = generic_calibrate_decr,
- .restart = ppc4xx_reset_system,
-};
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex_ml510.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex_ml510.c
deleted file mode 100644
index ba4a6e38..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/virtex_ml510.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <asm/i8259.h>
-#include <linux/pci.h>
-#include "44x.h"
-
-/**
- * ml510_ail_quirk
- */
-static void __devinit ml510_ali_quirk(struct pci_dev *dev)
-{
- /* Enable the IDE controller */
- pci_write_config_byte(dev, 0x58, 0x4c);
- /* Assign irq 14 to the primary ide channel */
- pci_write_config_byte(dev, 0x44, 0x0d);
- /* Assign irq 15 to the secondary ide channel */
- pci_write_config_byte(dev, 0x75, 0x0f);
- /* Set the ide controller in native mode */
- pci_write_config_byte(dev, 0x09, 0xff);
-
- /* INTB = disabled, INTA = disabled */
- pci_write_config_byte(dev, 0x48, 0x00);
- /* INTD = disabled, INTC = disabled */
- pci_write_config_byte(dev, 0x4a, 0x00);
- /* Audio = INT7, Modem = disabled. */
- pci_write_config_byte(dev, 0x4b, 0x60);
- /* USB = INT7 */
- pci_write_config_byte(dev, 0x74, 0x06);
-}
-DECLARE_PCI_FIXUP_EARLY(0x10b9, 0x1533, ml510_ali_quirk);
-
diff --git a/ANDROID_3.4.5/arch/powerpc/platforms/44x/warp.c b/ANDROID_3.4.5/arch/powerpc/platforms/44x/warp.c
deleted file mode 100644
index 4cfa4990..00000000
--- a/ANDROID_3.4.5/arch/powerpc/platforms/44x/warp.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * PIKA Warp(tm) board specific routines
- *
- * Copyright (c) 2008-2009 PIKA Technologies
- * Sean MacLennan <smaclennan@pikatech.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-#include <linux/init.h>
-#include <linux/of_platform.h>
-#include <linux/kthread.h>
-#include <linux/i2c.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/of_gpio.h>
-#include <linux/of_i2c.h>
-#include <linux/slab.h>
-#include <linux/export.h>
-
-#include <asm/machdep.h>
-#include <asm/prom.h>
-#include <asm/udbg.h>
-#include <asm/time.h>
-#include <asm/uic.h>
-#include <asm/ppc4xx.h>
-
-
-static __initdata struct of_device_id warp_of_bus[] = {
- { .compatible = "ibm,plb4", },
- { .compatible = "ibm,opb", },
- { .compatible = "ibm,ebc", },
- {},
-};
-
-static int __init warp_device_probe(void)
-{
- of_platform_bus_probe(NULL, warp_of_bus, NULL);
- return 0;
-}
-machine_device_initcall(warp, warp_device_probe);
-
-static int __init warp_probe(void)
-{
- unsigned long root = of_get_flat_dt_root();
-
- if (!of_flat_dt_is_compatible(root, "pika,warp"))
- return 0;
-
- /* For __dma_alloc_coherent */
- ISA_DMA_THRESHOLD = ~0L;
-
- return 1;
-}
-
-define_machine(warp) {
- .name = "Warp",
- .probe = warp_probe,
- .progress = udbg_progress,
- .init_IRQ = uic_init_tree,
- .get_irq = uic_get_irq,
- .restart = ppc4xx_reset_system,
- .calibrate_decr = generic_calibrate_decr,
-};
-
-
-static int __init warp_post_info(void)
-{
- struct device_node *np;
- void __iomem *fpga;
- u32 post1, post2;
-
- /* Sighhhh... POST information is in the sd area. */
- np = of_find_compatible_node(NULL, NULL, "pika,fpga-sd");
- if (np == NULL)
- return -ENOENT;
-
- fpga = of_iomap(np, 0);
- of_node_put(np);
- if (fpga == NULL)
- return -ENOENT;
-
- post1 = in_be32(fpga + 0x40);
- post2 = in_be32(fpga + 0x44);
-
- iounmap(fpga);
-
- if (post1 || post2)
- printk(KERN_INFO "Warp POST %08x %08x\n", post1, post2);
- else
- printk(KERN_INFO "Warp POST OK\n");
-
- return 0;
-}
-
-
-#ifdef CONFIG_SENSORS_AD7414
-
-static LIST_HEAD(dtm_shutdown_list);
-static void __iomem *dtm_fpga;
-static unsigned green_led, red_led;
-
-
-struct dtm_shutdown {
- struct list_head list;
- void (*func)(void *arg);
- void *arg;
-};
-
-
-int pika_dtm_register_shutdown(void (*func)(void *arg), void *arg)
-{
- struct dtm_shutdown *shutdown;
-
- shutdown = kmalloc(sizeof(struct dtm_shutdown), GFP_KERNEL);
- if (shutdown == NULL)
- return -ENOMEM;
-
- shutdown->func = func;
- shutdown->arg = arg;
-
- list_add(&shutdown->list, &dtm_shutdown_list);
-
- return 0;
-}
-
-int pika_dtm_unregister_shutdown(void (*func)(void *arg), void *arg)
-{
- struct dtm_shutdown *shutdown;
-
- list_for_each_entry(shutdown, &dtm_shutdown_list, list)
- if (shutdown->func == func && shutdown->arg == arg) {
- list_del(&shutdown->list);
- kfree(shutdown);
- return 0;
- }
-
- return -EINVAL;
-}
-
-static irqreturn_t temp_isr(int irq, void *context)
-{
- struct dtm_shutdown *shutdown;
- int value = 1;
-
- local_irq_disable();
-
- gpio_set_value(green_led, 0);
-
- /* Run through the shutdown list. */
- list_for_each_entry(shutdown, &dtm_shutdown_list, list)
- shutdown->func(shutdown->arg);
-
- printk(KERN_EMERG "\n\nCritical Temperature Shutdown\n\n");
-
- while (1) {
- if (dtm_fpga) {
- unsigned reset = in_be32(dtm_fpga + 0x14);
- out_be32(dtm_fpga + 0x14, reset);
- }
-
- gpio_set_value(red_led, value);
- value ^= 1;
- mdelay(500);
- }
-
- /* Not reached */
- return IRQ_HANDLED;
-}
-
-static int pika_setup_leds(void)
-{
- struct device_node *np, *child;
-
- np = of_find_compatible_node(NULL, NULL, "gpio-leds");
- if (!np) {
- printk(KERN_ERR __FILE__ ": Unable to find leds\n");
- return -ENOENT;
- }
-
- for_each_child_of_node(np, child)
- if (strcmp(child->name, "green") == 0)
- green_led = of_get_gpio(child, 0);
- else if (strcmp(child->name, "red") == 0)
- red_led = of_get_gpio(child, 0);
-
- of_node_put(np);
-
- return 0;
-}
-
-static void pika_setup_critical_temp(struct device_node *np,
- struct i2c_client *client)
-{
- int irq, rc;
-
- /* Do this before enabling critical temp interrupt since we
- * may immediately interrupt.
- */
- pika_setup_leds();
-
- /* These registers are in 1 degree increments. */
- i2c_smbus_write_byte_data(client, 2, 65); /* Thigh */
- i2c_smbus_write_byte_data(client, 3, 0); /* Tlow */
-
- irq = irq_of_parse_and_map(np, 0);
- if (irq == NO_IRQ) {
- printk(KERN_ERR __FILE__ ": Unable to get ad7414 irq\n");
- return;
- }
-
- rc = request_irq(irq, temp_isr, 0, "ad7414", NULL);
- if (rc) {
- printk(KERN_ERR __FILE__
- ": Unable to request ad7414 irq %d = %d\n", irq, rc);
- return;
- }
-}
-
-static inline void pika_dtm_check_fan(void __iomem *fpga)
-{
- static int fan_state;
- u32 fan = in_be32(fpga + 0x34) & (1 << 14);
-
- if (fan_state != fan) {
- fan_state = fan;
- if (fan)
- printk(KERN_WARNING "Fan rotation error detected."
- " Please check hardware.\n");
- }
-}
-
-static int pika_dtm_thread(void __iomem *fpga)
-{
- struct device_node *np;
- struct i2c_client *client;
-
- np = of_find_compatible_node(NULL, NULL, "adi,ad7414");
- if (np == NULL)
- return -ENOENT;
-
- client = of_find_i2c_device_by_node(np);
- if (client == NULL) {
- of_node_put(np);
- return -ENOENT;
- }
-
- pika_setup_critical_temp(np, client);
-
- of_node_put(np);
-
- printk(KERN_INFO "Warp DTM thread running.\n");
-
- while (!kthread_should_stop()) {
- int val;
-
- val = i2c_smbus_read_word_data(client, 0);
- if (val < 0)
- dev_dbg(&client->dev, "DTM read temp failed.\n");
- else {
- s16 temp = swab16(val);
- out_be32(fpga + 0x20, temp);
- }
-
- pika_dtm_check_fan(fpga);
-
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ);
- }
-
- return 0;
-}
-
-static int __init pika_dtm_start(void)
-{
- struct task_struct *dtm_thread;
- struct device_node *np;
-
- np = of_find_compatible_node(NULL, NULL, "pika,fpga");
- if (np == NULL)
- return -ENOENT;
-
- dtm_fpga = of_iomap(np, 0);
- of_node_put(np);
- if (dtm_fpga == NULL)
- return -ENOENT;
-
- /* Must get post info before thread starts. */
- warp_post_info();
-
- dtm_thread = kthread_run(pika_dtm_thread, dtm_fpga, "pika-dtm");
- if (IS_ERR(dtm_thread)) {
- iounmap(dtm_fpga);
- return PTR_ERR(dtm_thread);
- }
-
- return 0;
-}
-machine_late_initcall(warp, pika_dtm_start);
-
-#else /* !CONFIG_SENSORS_AD7414 */
-
-int pika_dtm_register_shutdown(void (*func)(void *arg), void *arg)
-{
- return 0;
-}
-
-int pika_dtm_unregister_shutdown(void (*func)(void *arg), void *arg)
-{
- return 0;
-}
-
-machine_late_initcall(warp, warp_post_info);
-
-#endif
-
-EXPORT_SYMBOL(pika_dtm_register_shutdown);
-EXPORT_SYMBOL(pika_dtm_unregister_shutdown);