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

Commit 5cd47155 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

Merge branch 'ixp4xx' into devel

Conflicts:

	include/asm-arm/arch-ixp4xx/io.h
parents 6f95416e 28bd3a0d
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -117,11 +117,13 @@ CONFIG_ARCH_ADI_COYOTE=y
CONFIG_ARCH_IXDP425=y
CONFIG_ARCH_IXDP425=y
CONFIG_MACH_IXDPG425=y
CONFIG_MACH_IXDPG425=y
CONFIG_MACH_IXDP465=y
CONFIG_MACH_IXDP465=y
CONFIG_MACH_KIXRP435=y
CONFIG_ARCH_IXCDP1100=y
CONFIG_ARCH_IXCDP1100=y
CONFIG_ARCH_PRPMC1100=y
CONFIG_ARCH_PRPMC1100=y
CONFIG_MACH_NAS100D=y
CONFIG_MACH_NAS100D=y
CONFIG_ARCH_IXDP4XX=y
CONFIG_ARCH_IXDP4XX=y
CONFIG_CPU_IXP46X=y
CONFIG_CPU_IXP46X=y
CONFIG_CPU_IXP43X=y
# CONFIG_MACH_GTWX5715 is not set
# CONFIG_MACH_GTWX5715 is not set


#
#
+21 −1
Original line number Original line Diff line number Diff line
@@ -62,6 +62,12 @@ config MACH_IXDP465
	  IXDP465 Development Platform (Also known as BMP).
	  IXDP465 Development Platform (Also known as BMP).
	  For more information on this platform, see <file:Documentation/arm/IXP4xx>.
	  For more information on this platform, see <file:Documentation/arm/IXP4xx>.


config MACH_KIXRP435
	bool "KIXRP435"
	help
	  Say 'Y' here if you want your kernel to support Intel's
	  KIXRP435 Reference Platform.
	  For more information on this platform, see <file:Documentation/arm/IXP4xx>.


#
#
# IXCDP1100 is the exact same HW as IXDP425, but with a different machine 
# IXCDP1100 is the exact same HW as IXDP425, but with a different machine 
@@ -89,12 +95,21 @@ config MACH_NAS100D
	  NAS 100d device. For more information on this platform,
	  NAS 100d device. For more information on this platform,
	  see http://www.nslu2-linux.org/wiki/NAS100d/HomePage
	  see http://www.nslu2-linux.org/wiki/NAS100d/HomePage


config MACH_DSMG600
	bool
	prompt "D-Link DSM-G600 RevA"
	select PCI
	help
	  Say 'Y' here if you want your kernel to support D-Link's
	  DSM-G600 RevA device. For more information on this platform,
	  see http://www.nslu2-linux.org/wiki/DSMG600/HomePage

#
#
# Avila and IXDP share the same source for now. Will change in future
# Avila and IXDP share the same source for now. Will change in future
#
#
config	ARCH_IXDP4XX
config	ARCH_IXDP4XX
	bool
	bool
	depends on ARCH_IXDP425 || MACH_IXDP465
	depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435
	default y
	default y


#
#
@@ -105,6 +120,11 @@ config CPU_IXP46X
	depends on MACH_IXDP465
	depends on MACH_IXDP465
	default y
	default y


config CPU_IXP43X
	bool
	depends on MACH_KIXRP435
	default y

config MACH_GTWX5715
config MACH_GTWX5715
	bool "Gemtek WX5715 (Linksys WRV54G)"
	bool "Gemtek WX5715 (Linksys WRV54G)"
	depends on ARCH_IXP4XX
	depends on ARCH_IXP4XX
+2 −0
Original line number Original line Diff line number Diff line
@@ -12,6 +12,7 @@ obj-pci-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o
obj-pci-$(CONFIG_MACH_GTWX5715)		+= gtwx5715-pci.o
obj-pci-$(CONFIG_MACH_GTWX5715)		+= gtwx5715-pci.o
obj-pci-$(CONFIG_MACH_NSLU2)		+= nslu2-pci.o
obj-pci-$(CONFIG_MACH_NSLU2)		+= nslu2-pci.o
obj-pci-$(CONFIG_MACH_NAS100D)		+= nas100d-pci.o
obj-pci-$(CONFIG_MACH_NAS100D)		+= nas100d-pci.o
obj-pci-$(CONFIG_MACH_DSMG600)		+= dsmg600-pci.o


obj-y	+= common.o
obj-y	+= common.o


@@ -22,5 +23,6 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-setup.o
obj-$(CONFIG_MACH_GTWX5715)	+= gtwx5715-setup.o
obj-$(CONFIG_MACH_GTWX5715)	+= gtwx5715-setup.o
obj-$(CONFIG_MACH_NSLU2)	+= nslu2-setup.o nslu2-power.o
obj-$(CONFIG_MACH_NSLU2)	+= nslu2-setup.o nslu2-power.o
obj-$(CONFIG_MACH_NAS100D)	+= nas100d-setup.o nas100d-power.o
obj-$(CONFIG_MACH_NAS100D)	+= nas100d-setup.o nas100d-power.o
obj-$(CONFIG_MACH_DSMG600)      += dsmg600-setup.o dsmg600-power.o


obj-$(CONFIG_PCI)		+= $(obj-pci-$(CONFIG_PCI)) common-pci.o
obj-$(CONFIG_PCI)		+= $(obj-pci-$(CONFIG_PCI)) common-pci.o
+2 −2
Original line number Original line Diff line number Diff line
@@ -374,7 +374,7 @@ void __init ixp4xx_pci_preinit(void)
	 * Determine which PCI read method to use.
	 * Determine which PCI read method to use.
	 * Rev 0 IXP425 requires workaround.
	 * Rev 0 IXP425 requires workaround.
	 */
	 */
	if (!(processor_id & 0xf) && !cpu_is_ixp46x()) {
	if (!(processor_id & 0xf) && cpu_is_ixp42x()) {
		printk("PCI: IXP42x A0 silicon detected - "
		printk("PCI: IXP42x A0 silicon detected - "
			"PCI Non-Prefetch Workaround Enabled\n");
			"PCI Non-Prefetch Workaround Enabled\n");
		ixp4xx_pci_read = ixp4xx_pci_read_errata;
		ixp4xx_pci_read = ixp4xx_pci_read_errata;
@@ -480,7 +480,7 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys)
	res[0].flags = IORESOURCE_IO;
	res[0].flags = IORESOURCE_IO;


	res[1].name = "PCI Memory Space";
	res[1].name = "PCI Memory Space";
	res[1].start = 0x48000000;
	res[1].start = PCIBIOS_MIN_MEM;
#ifndef CONFIG_IXP4XX_INDIRECT_PCI
#ifndef CONFIG_IXP4XX_INDIRECT_PCI
	res[1].end = 0x4bffffff;
	res[1].end = 0x4bffffff;
#else
#else
+26 −3
Original line number Original line Diff line number Diff line
@@ -105,6 +105,29 @@ static signed char irq2gpio[32] = {
	 7,  8,  9, 10, 11, 12, -1, -1,
	 7,  8,  9, 10, 11, 12, -1, -1,
};
};


int gpio_to_irq(int gpio)
{
	int irq;

	for (irq = 0; irq < 32; irq++) {
		if (irq2gpio[irq] == gpio)
			return irq;
	}
	return -EINVAL;
}
EXPORT_SYMBOL(gpio_to_irq);

int irq_to_gpio(int irq)
{
	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;

	if (gpio == -1)
		return -EINVAL;

	return gpio;
}
EXPORT_SYMBOL(irq_to_gpio);

static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)
static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)
{
{
	int line = irq2gpio[irq];
	int line = irq2gpio[irq];
@@ -172,7 +195,7 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)


static void ixp4xx_irq_mask(unsigned int irq)
static void ixp4xx_irq_mask(unsigned int irq)
{
{
	if (cpu_is_ixp46x() && irq >= 32)
	if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32)
		*IXP4XX_ICMR2 &= ~(1 << (irq - 32));
		*IXP4XX_ICMR2 &= ~(1 << (irq - 32));
	else
	else
		*IXP4XX_ICMR &= ~(1 << irq);
		*IXP4XX_ICMR &= ~(1 << irq);
@@ -195,7 +218,7 @@ static void ixp4xx_irq_unmask(unsigned int irq)
	if (!(ixp4xx_irq_edge & (1 << irq)))
	if (!(ixp4xx_irq_edge & (1 << irq)))
		ixp4xx_irq_ack(irq);
		ixp4xx_irq_ack(irq);


	if (cpu_is_ixp46x() && irq >= 32)
	if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32)
		*IXP4XX_ICMR2 |= (1 << (irq - 32));
		*IXP4XX_ICMR2 |= (1 << (irq - 32));
	else
	else
		*IXP4XX_ICMR |= (1 << irq);
		*IXP4XX_ICMR |= (1 << irq);
@@ -219,7 +242,7 @@ void __init ixp4xx_init_irq(void)
	/* Disable all interrupt */
	/* Disable all interrupt */
	*IXP4XX_ICMR = 0x0; 
	*IXP4XX_ICMR = 0x0; 


	if (cpu_is_ixp46x()) {
	if (cpu_is_ixp46x() || cpu_is_ixp43x()) {
		/* Route upper 32 sources to IRQ instead of FIQ */
		/* Route upper 32 sources to IRQ instead of FIQ */
		*IXP4XX_ICLR2 = 0x00;
		*IXP4XX_ICLR2 = 0x00;


Loading