Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52920df4 authored by Paul Mackerras's avatar Paul Mackerras
Browse files

Merge branch 'for-2.6.25' of...

Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/olof/pasemi into for-2.6.25
parents 0173d422 9cd55be4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc6
# Fri Dec 28 11:01:53 2007
# Tue Jan 15 10:26:10 2008
#
CONFIG_PPC64=y

@@ -152,7 +152,6 @@ CONFIG_PPC_PASEMI=y
CONFIG_PPC_PASEMI_IOMMU=y
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
CONFIG_PPC_PASEMI_MDIO=y
CONFIG_ELECTRA_IDE=y
# CONFIG_PPC_CELLEB is not set
# CONFIG_PPC_PS3 is not set
# CONFIG_PPC_CELL is not set
@@ -663,6 +662,7 @@ CONFIG_PATA_PCMCIA=y
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_PATA_PLATFORM=y
CONFIG_PATA_OF_PLATFORM=y
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=y
+0 −9
Original line number Diff line number Diff line
@@ -37,13 +37,4 @@ config PPC_PASEMI_MDIO
	help
	  Driver for MDIO via GPIO on PWRficient platforms

config ELECTRA_IDE
      tristate "Electra IDE driver"
      default y
      depends on PPC_PASEMI && ATA
      select PATA_PLATFORM
      help
	This includes driver support for the Electra on-board IDE
	interface.

endmenu
+0 −1
Original line number Diff line number Diff line
obj-y	+= setup.o pci.o time.o idle.o powersave.o iommu.o
obj-$(CONFIG_PPC_PASEMI_MDIO)	+= gpio_mdio.o
obj-$(CONFIG_ELECTRA_IDE) += electra_ide.o
obj-$(CONFIG_PPC_PASEMI_CPUFREQ) += cpufreq.o
+0 −96
Original line number Diff line number Diff line
/*
 * Copyright (C) 2007 PA Semi, Inc
 *
 * Maintained by: Olof Johansson <olof@lixom.net>
 *
 * 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/platform_device.h>

#include <asm/prom.h>
#include <asm/system.h>

/* The electra IDE interface is incredibly simple: Just a device on the localbus
 * with interrupts hooked up to one of the GPIOs. The device tree contains the
 * address window and interrupt mappings already, and the pata_platform driver handles
 * the rest. We just need to hook the two up.
 */

#define MAX_IFS	4	/* really, we have only one */

static struct platform_device *pdevs[MAX_IFS];

static int __devinit electra_ide_init(void)
{
	struct device_node *np;
	struct resource r[3];
	int ret = 0;
	int i;

	np = of_find_compatible_node(NULL, "ide", "electra-ide");
	i = 0;

	while (np && i < MAX_IFS) {
		memset(r, 0, sizeof(r));

		/* pata_platform wants two address ranges: one for the base registers,
		 * another for the control (altstatus). It's located at offset 0x3f6 in
		 * the window, but the device tree only has one large register window
		 * that covers both ranges. So we need to split it up by hand here:
		 */

		ret = of_address_to_resource(np, 0, &r[0]);
		if (ret)
			goto out;
		ret = of_address_to_resource(np, 0, &r[1]);
		if (ret)
			goto out;

		r[1].start += 0x3f6;
		r[0].end = r[1].start-1;

		r[2].start = irq_of_parse_and_map(np, 0);
		r[2].end = irq_of_parse_and_map(np, 0);
		r[2].flags = IORESOURCE_IRQ;

		pr_debug("registering platform device at 0x%lx/0x%lx, irq is %ld\n",
			 r[0].start, r[1].start, r[2].start);
		pdevs[i] = platform_device_register_simple("pata_platform", i, r, 3);
		if (IS_ERR(pdevs[i])) {
			ret = PTR_ERR(pdevs[i]);
			pdevs[i] = NULL;
			goto out;
		}
		np = of_find_compatible_node(np, "ide", "electra-ide");
	}
out:
	return ret;
}
module_init(electra_ide_init);

static void __devexit electra_ide_exit(void)
{
	int i;

	for (i = 0; i < MAX_IFS; i++)
		if (pdevs[i])
			platform_device_unregister(pdevs[i]);
}
module_exit(electra_ide_exit);


MODULE_LICENSE("GPL");
MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>");
MODULE_DESCRIPTION("PA Semi Electra IDE driver");
+1 −4
Original line number Diff line number Diff line
@@ -74,9 +74,6 @@ static int pasemi_system_reset_exception(struct pt_regs *regs)

static int __init pasemi_idle_init(void)
{
	if (!machine_is(pasemi))
		return -ENODEV;

#ifndef CONFIG_PPC_PASEMI_CPUFREQ
	printk(KERN_WARNING "No cpufreq driver, powersavings modes disabled\n");
	current_mode = 0;
@@ -88,7 +85,7 @@ static int __init pasemi_idle_init(void)

	return 0;
}
late_initcall(pasemi_idle_init);
machine_late_initcall(pasemi, pasemi_idle_init);

static int __init idle_param(char *p)
{
Loading