linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC]
@ 2008-05-08 14:20 Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 1/3] [POWERPC] implement machine specific PCI fixup calls Anton Vorontsov
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-08 14:20 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

On Mon, May 05, 2008 at 02:11:30PM -0500, Kumar Gala wrote:
>
> On May 5, 2008, at 1:56 PM, Anton Vorontsov wrote:
>
>> The ULI "Super South Bridge" contains ISA bridge to the legacy
>> devices, such as Super IO mouse/keyboard/floppy disk controllers,
>> parallel port, i8259 interrupt controller and so on.
>>
>> On the MPC8610HPCD, i8259 seems to be disabled (mpc8610_hpcd.c
>> confirms this), and other peripherals are not traced out.
>> So we use only RTC.
>>
>> This patch also adds ULI quirk to make RTC actually work (this
>> quirk differs a bit from the one in the fsl_uli1575.c).
>
> Can we just one quick for both?

Probably yes, but fsl_uli1575 needs some other changes for this.

This series fully tested on MPC8610HPCD, and build-tested for
MPC85xxDS and MPC8641HPCN.

-- 
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] [POWERPC] implement machine specific PCI fixup calls
  2008-05-08 14:20 [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
@ 2008-05-08 14:20 ` Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 2/3] [POWERPC] turn fsl_uli1575 into PCI fixups library Anton Vorontsov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-08 14:20 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

These are similar to machine_initcalls, but works for the PCI fixups.
We need this to apply machine specific fixups for the same PCI devices.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
 include/asm-powerpc/pci.h |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/include/asm-powerpc/pci.h b/include/asm-powerpc/pci.h
index a05a942..03fdc58 100644
--- a/include/asm-powerpc/pci.h
+++ b/include/asm-powerpc/pci.h
@@ -224,5 +224,21 @@ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
 extern void pcibios_do_bus_setup(struct pci_bus *bus);
 extern void pcibios_fixup_of_probed_bus(struct pci_bus *bus);
 
+#define DEFINE_MACHINE_PCIFIXUP(type, mach, vendor, device, hook)        \
+	static void __devinit                                            \
+	__machine_pcifixup_##mach##_##hook(struct pci_dev *dev) {        \
+		if (machine_is(mach))                                    \
+			hook(dev);                                       \
+	}                                                                \
+	DECLARE_PCI_FIXUP_##type(vendor, device,                         \
+				 __machine_pcifixup_##mach##_##hook)
+
+#define MACH_PCI_FIXUP_EARLY(mach, vendor, device, hook) \
+	DEFINE_MACHINE_PCIFIXUP(EARLY, mach, vendor, device, hook)
+#define MACH_PCI_FIXUP_FINAL(mach, vendor, device, hook) \
+	DEFINE_MACHINE_PCIFIXUP(FINAL, mach, vendor, device, hook)
+#define MACH_PCI_FIXUP_HEADER(mach, vendor, device, hook) \
+	DEFINE_MACHINE_PCIFIXUP(HEADER, mach, vendor, device, hook)
+
 #endif	/* __KERNEL__ */
 #endif /* __ASM_POWERPC_PCI_H */
-- 
1.5.5.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] [POWERPC] turn fsl_uli1575 into PCI fixups library
  2008-05-08 14:20 [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 1/3] [POWERPC] implement machine specific PCI fixup calls Anton Vorontsov
@ 2008-05-08 14:20 ` Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 3/3] [POWERPC] fsl_uli1575: change RTC quirk to work on MPC8610HPCD Anton Vorontsov
  2008-05-15 16:20 ` [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
  3 siblings, 0 replies; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-08 14:20 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

With this patch we can choose which ULI fixups we want to apply
for the specific boards.

There are no changes to the fixups them selfs.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
 arch/powerpc/platforms/85xx/mpc85xx_ds.c   |   11 ++-
 arch/powerpc/platforms/86xx/Kconfig        |    1 +
 arch/powerpc/platforms/86xx/mpc8610_hpcd.c |   90 ++-----------------------
 arch/powerpc/platforms/86xx/mpc86xx_hpcn.c |   12 ++-
 arch/powerpc/platforms/fsl_uli1575.c       |  100 ++++++++++++++++++++++++----
 include/asm-powerpc/fsl_uli1575.h          |   36 ++++++++++
 6 files changed, 145 insertions(+), 105 deletions(-)
 create mode 100644 include/asm-powerpc/fsl_uli1575.h

diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index dfd8b4a..961a6d7 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -29,6 +29,7 @@
 #include <asm/prom.h>
 #include <asm/udbg.h>
 #include <asm/mpic.h>
+#include <asm/fsl_uli1575.h>
 #include <asm/i8259.h>
 
 #include <sysdev/fsl_soc.h>
@@ -114,9 +115,6 @@ void __init mpc85xx_ds_pic_init(void)
 
 #ifdef CONFIG_PCI
 static int primary_phb_addr;
-extern int uses_fsl_uli_m1575;
-extern int uli_exclude_device(struct pci_controller *hose,
-				u_char bus, u_char devfn);
 
 static int mpc85xx_exclude_device(struct pci_controller *hose,
 				   u_char bus, u_char devfn)
@@ -133,6 +131,13 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
 
 	return PCIBIOS_SUCCESSFUL;
 }
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575);
 #endif	/* CONFIG_PCI */
 
 /*
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig
index 053f49a..39c02af 100644
--- a/arch/powerpc/platforms/86xx/Kconfig
+++ b/arch/powerpc/platforms/86xx/Kconfig
@@ -21,6 +21,7 @@ config SBC8641D
 config MPC8610_HPCD
 	bool "Freescale MPC8610 HPCD"
 	select DEFAULT_UIMAGE
+	select FSL_ULI1575
 	help
 	  This option enables support for the MPC8610 HPCD board.
 
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
index e415353..2fa672b 100644
--- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
+++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
@@ -34,6 +34,7 @@
 #include <asm/udbg.h>
 
 #include <asm/mpic.h>
+#include <asm/fsl_uli1575.h>
 
 #include <linux/of_platform.h>
 #include <sysdev/fsl_pci.h>
@@ -224,93 +225,12 @@ static void __init mpc86xx_hpcd_init_irq(void)
 }
 
 #ifdef CONFIG_PCI
-static void __devinit quirk_uli1575(struct pci_dev *dev)
-{
-	u32 temp32;
-
-	/* Disable INTx */
-	pci_read_config_dword(dev, 0x48, &temp32);
-	pci_write_config_dword(dev, 0x48, (temp32 | 1<<26));
-
-	/* Enable sideband interrupt */
-	pci_read_config_dword(dev, 0x90, &temp32);
-	pci_write_config_dword(dev, 0x90, (temp32 | 1<<22));
-}
-
-static void __devinit quirk_uli5288(struct pci_dev *dev)
-{
-	unsigned char c;
-	unsigned short temp;
-
-	/* Interrupt Disable, Needed when SATA disabled */
-	pci_read_config_word(dev, PCI_COMMAND, &temp);
-	temp |= 1<<10;
-	pci_write_config_word(dev, PCI_COMMAND, temp);
-
-	pci_read_config_byte(dev, 0x83, &c);
-	c |= 0x80;
-	pci_write_config_byte(dev, 0x83, c);
-
-	pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01);
-	pci_write_config_byte(dev, PCI_CLASS_DEVICE, 0x06);
-
-	pci_read_config_byte(dev, 0x83, &c);
-	c &= 0x7f;
-	pci_write_config_byte(dev, 0x83, c);
-}
-
-/*
- * Since 8259PIC was disabled on the board, the IDE device can not
- * use the legacy IRQ, we need to let the IDE device work under
- * native mode and use the interrupt line like other PCI devices.
- * IRQ14 is a sideband interrupt from IDE device to CPU and we use this
- * as the interrupt for IDE device.
- */
-static void __devinit quirk_uli5229(struct pci_dev *dev)
-{
-	unsigned char c;
-
-	pci_read_config_byte(dev, 0x4b, &c);
-	c |= 0x10;
-	pci_write_config_byte(dev, 0x4b, c);
-}
-
-/*
- * SATA interrupt pin bug fix
- * There's a chip bug for 5288, The interrupt pin should be 2,
- * not the read only value 1, So it use INTB#, not INTA# which
- * actually used by the IDE device 5229.
- * As of this bug, during the PCI initialization, 5288 read the
- * irq of IDE device from the device tree, this function fix this
- * bug by re-assigning a correct irq to 5288.
- *
- */
-static void __devinit final_uli5288(struct pci_dev *dev)
-{
-	struct pci_controller *hose = pci_bus_to_host(dev->bus);
-	struct device_node *hosenode = hose ? hose->dn : NULL;
-	struct of_irq oirq;
-	int virq, pin = 2;
-	u32 laddr[3];
-
-	if (!hosenode)
-		return;
-
-	laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(31, 0) << 8);
-	laddr[1] = laddr[2] = 0;
-	of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq);
-	virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
-				     oirq.size);
-	dev->irq = virq;
-}
-
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5288, final_uli5288);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x1575, hpcd_quirk_uli1575);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5288, hpcd_quirk_uli5288);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5229, hpcd_quirk_uli5229);
+MACH_PCI_FIXUP_FINAL(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5288, hpcd_final_uli5288);
 #endif /* CONFIG_PCI */
 
-
 #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
 
 static u32 get_busfreq(void)
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index f13704a..4e1ee2e 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -29,6 +29,7 @@
 #include <mm/mmu_decl.h>
 #include <asm/udbg.h>
 #include <asm/i8259.h>
+#include <asm/fsl_uli1575.h>
 
 #include <asm/mpic.h>
 
@@ -107,10 +108,6 @@ mpc86xx_hpcn_init_irq(void)
 }
 
 #ifdef CONFIG_PCI
-extern int uses_fsl_uli_m1575;
-extern int uli_exclude_device(struct pci_controller *hose,
-				u_char bus, u_char devfn);
-
 static int mpc86xx_exclude_device(struct pci_controller *hose,
 				   u_char bus, u_char devfn)
 {
@@ -126,6 +123,13 @@ static int mpc86xx_exclude_device(struct pci_controller *hose,
 
 	return PCIBIOS_SUCCESSFUL;
 }
+
+MACH_PCI_FIXUP_EARLY(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
+MACH_PCI_FIXUP_HEADER(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
+MACH_PCI_FIXUP_FINAL(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
+MACH_PCI_FIXUP_FINAL(mpc86xx_hpcn, PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575);
 #endif /* CONFIG_PCI */
 
 
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c
index afc9141..63ea4eb 100644
--- a/arch/powerpc/platforms/fsl_uli1575.c
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -17,6 +17,7 @@
 
 #include <asm/system.h>
 #include <asm/pci-bridge.h>
+#include <asm/fsl_uli1575.h>
 
 #define ULI_PIRQA	0x08
 #define ULI_PIRQB	0x09
@@ -55,7 +56,7 @@ u8 uli_pirq_to_irq[8] = {
 int uses_fsl_uli_m1575;
 
 /* Bridge */
-static void __devinit early_uli5249(struct pci_dev *dev)
+void __devinit early_uli5249(struct pci_dev *dev)
 {
 	unsigned char temp;
 
@@ -77,8 +78,7 @@ static void __devinit early_uli5249(struct pci_dev *dev)
 	pci_write_config_byte(dev, 0x7c, temp);
 }
 
-
-static void __devinit quirk_uli1575(struct pci_dev *dev)
+void __devinit quirk_uli1575(struct pci_dev *dev)
 {
 	int i;
 
@@ -135,7 +135,7 @@ static void __devinit quirk_uli1575(struct pci_dev *dev)
 	pci_write_config_byte(dev, 0x75, ULI_8259_IRQ15);
 }
 
-static void __devinit quirk_final_uli1575(struct pci_dev *dev)
+void __devinit quirk_final_uli1575(struct pci_dev *dev)
 {
 	/* Set i8259 interrupt trigger
 	 * IRQ 3:  Level
@@ -171,7 +171,7 @@ static void __devinit quirk_final_uli1575(struct pci_dev *dev)
 }
 
 /* SATA */
-static void __devinit quirk_uli5288(struct pci_dev *dev)
+void __devinit quirk_uli5288(struct pci_dev *dev)
 {
 	unsigned char c;
 	unsigned int d;
@@ -196,7 +196,7 @@ static void __devinit quirk_uli5288(struct pci_dev *dev)
 }
 
 /* PATA */
-static void __devinit quirk_uli5229(struct pci_dev *dev)
+void __devinit quirk_uli5229(struct pci_dev *dev)
 {
 	unsigned short temp;
 
@@ -212,7 +212,7 @@ static void __devinit quirk_uli5229(struct pci_dev *dev)
 }
 
 /* We have to do a dummy read on the P2P for the RTC to work, WTF */
-static void __devinit quirk_final_uli5249(struct pci_dev *dev)
+void __devinit quirk_final_uli5249(struct pci_dev *dev)
 {
 	int i;
 	u8 *dummy;
@@ -231,12 +231,86 @@ static void __devinit quirk_final_uli5249(struct pci_dev *dev)
 	}
 }
 
-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575);
+
+void __devinit hpcd_quirk_uli1575(struct pci_dev *dev)
+{
+	u32 temp32;
+
+	/* Disable INTx */
+	pci_read_config_dword(dev, 0x48, &temp32);
+	pci_write_config_dword(dev, 0x48, (temp32 | 1<<26));
+
+	/* Enable sideband interrupt */
+	pci_read_config_dword(dev, 0x90, &temp32);
+	pci_write_config_dword(dev, 0x90, (temp32 | 1<<22));
+}
+
+void __devinit hpcd_quirk_uli5288(struct pci_dev *dev)
+{
+	unsigned char c;
+	unsigned short temp;
+
+	/* Interrupt Disable, Needed when SATA disabled */
+	pci_read_config_word(dev, PCI_COMMAND, &temp);
+	temp |= 1<<10;
+	pci_write_config_word(dev, PCI_COMMAND, temp);
+
+	pci_read_config_byte(dev, 0x83, &c);
+	c |= 0x80;
+	pci_write_config_byte(dev, 0x83, c);
+
+	pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01);
+	pci_write_config_byte(dev, PCI_CLASS_DEVICE, 0x06);
+
+	pci_read_config_byte(dev, 0x83, &c);
+	c &= 0x7f;
+	pci_write_config_byte(dev, 0x83, c);
+}
+
+/*
+ * Since 8259PIC was disabled on the board, the IDE device can not
+ * use the legacy IRQ, we need to let the IDE device work under
+ * native mode and use the interrupt line like other PCI devices.
+ * IRQ14 is a sideband interrupt from IDE device to CPU and we use this
+ * as the interrupt for IDE device.
+ */
+void __devinit hpcd_quirk_uli5229(struct pci_dev *dev)
+{
+	unsigned char c;
+
+	pci_read_config_byte(dev, 0x4b, &c);
+	c |= 0x10;
+	pci_write_config_byte(dev, 0x4b, c);
+}
+
+/*
+ * SATA interrupt pin bug fix
+ * There's a chip bug for 5288, The interrupt pin should be 2,
+ * not the read only value 1, So it use INTB#, not INTA# which
+ * actually used by the IDE device 5229.
+ * As of this bug, during the PCI initialization, 5288 read the
+ * irq of IDE device from the device tree, this function fix this
+ * bug by re-assigning a correct irq to 5288.
+ *
+ */
+void __devinit hpcd_final_uli5288(struct pci_dev *dev)
+{
+	struct pci_controller *hose = pci_bus_to_host(dev->bus);
+	struct device_node *hosenode = hose ? hose->dn : NULL;
+	struct of_irq oirq;
+	int virq, pin = 2;
+	u32 laddr[3];
+
+	if (!hosenode)
+		return;
+
+	laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(31, 0) << 8);
+	laddr[1] = laddr[2] = 0;
+	of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq);
+	virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
+				     oirq.size);
+	dev->irq = virq;
+}
 
 int uli_exclude_device(struct pci_controller *hose,
 			u_char bus, u_char devfn)
diff --git a/include/asm-powerpc/fsl_uli1575.h b/include/asm-powerpc/fsl_uli1575.h
new file mode 100644
index 0000000..9755c5c
--- /dev/null
+++ b/include/asm-powerpc/fsl_uli1575.h
@@ -0,0 +1,36 @@
+/*
+ * ULI M1575 setup code - specific to Freescale boards
+ *
+ * Copyright (c) 2007 Freescale Semiconductor Inc.
+ * Copyright (c) 2008 MontaVista Software, Inc.
+ *                    Anton Vorontsov <avorontsov@ru.mvista.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.
+ */
+
+#ifndef __ASM_POWERPC_FSL_ULI1575_H
+#define __ASM_POWERPC_FSL_ULI1575_H
+
+struct pci_controller;
+struct pci_dev;
+
+extern int uses_fsl_uli_m1575;
+extern int uli_exclude_device(struct pci_controller *hose,
+			      u_char bus, u_char devfn);
+
+extern void __devinit early_uli5249(struct pci_dev *dev);
+extern void __devinit quirk_uli1575(struct pci_dev *dev);
+extern void __devinit quirk_final_uli1575(struct pci_dev *dev);
+extern void __devinit quirk_uli5288(struct pci_dev *dev);
+extern void __devinit quirk_uli5229(struct pci_dev *dev);
+extern void __devinit quirk_final_uli5249(struct pci_dev *dev);
+
+extern void __devinit hpcd_quirk_uli1575(struct pci_dev *dev);
+extern void __devinit hpcd_quirk_uli5288(struct pci_dev *dev);
+extern void __devinit hpcd_quirk_uli5229(struct pci_dev *dev);
+extern void __devinit hpcd_final_uli5288(struct pci_dev *dev);
+
+#endif /* __ASM_POWERPC_FSL_ULI1575_H */
-- 
1.5.5.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] [POWERPC] fsl_uli1575: change RTC quirk to work on MPC8610HPCD
  2008-05-08 14:20 [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 1/3] [POWERPC] implement machine specific PCI fixup calls Anton Vorontsov
  2008-05-08 14:20 ` [PATCH 2/3] [POWERPC] turn fsl_uli1575 into PCI fixups library Anton Vorontsov
@ 2008-05-08 14:20 ` Anton Vorontsov
  2008-05-15 16:20 ` [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
  3 siblings, 0 replies; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-08 14:20 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

Currently fsl_uli1575.c's RTC quirk reads at ->start, but I got the RTC
working on the MPC8610HPCD only when reading at 0xa0100000-0xafffffff,
i.e. memory outside of behind-the-bridge devices' assigned regions.

This patch wasn't tested on the MPC85xxDS and MPC8641HPCN boards, I
don't have any of these.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
 arch/powerpc/platforms/86xx/mpc8610_hpcd.c |    1 +
 arch/powerpc/platforms/fsl_uli1575.c       |    2 +-
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
index 2fa672b..71dbd9d 100644
--- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
+++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
@@ -229,6 +229,7 @@ MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x1575, hpcd_quirk_uli1575
 MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5288, hpcd_quirk_uli5288);
 MACH_PCI_FIXUP_HEADER(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5229, hpcd_quirk_uli5229);
 MACH_PCI_FIXUP_FINAL(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5288, hpcd_final_uli5288);
+MACH_PCI_FIXUP_FINAL(mpc86xx_hpcd, PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
 #endif /* CONFIG_PCI */
 
 #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c
index 63ea4eb..a1b400a 100644
--- a/arch/powerpc/platforms/fsl_uli1575.c
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -221,7 +221,7 @@ void __devinit quirk_final_uli5249(struct pci_dev *dev)
 	for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
 		if ((bus->resource[i]) &&
 			(bus->resource[i]->flags & IORESOURCE_MEM)) {
-			dummy = ioremap(bus->resource[i]->start, 0x4);
+			dummy = ioremap(bus->resource[i]->end - 3, 0x4);
 			if (dummy) {
 				in_8(dummy);
 				iounmap(dummy);
-- 
1.5.5.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC]
  2008-05-08 14:20 [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
                   ` (2 preceding siblings ...)
  2008-05-08 14:20 ` [PATCH 3/3] [POWERPC] fsl_uli1575: change RTC quirk to work on MPC8610HPCD Anton Vorontsov
@ 2008-05-15 16:20 ` Anton Vorontsov
  2008-05-15 23:50   ` Stephen Rothwell
  3 siblings, 1 reply; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-15 16:20 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev

On Thu, May 08, 2008 at 06:20:05PM +0400, Anton Vorontsov wrote:
> On Mon, May 05, 2008 at 02:11:30PM -0500, Kumar Gala wrote:
> >
> > On May 5, 2008, at 1:56 PM, Anton Vorontsov wrote:
> >
> >> The ULI "Super South Bridge" contains ISA bridge to the legacy
> >> devices, such as Super IO mouse/keyboard/floppy disk controllers,
> >> parallel port, i8259 interrupt controller and so on.
> >>
> >> On the MPC8610HPCD, i8259 seems to be disabled (mpc8610_hpcd.c
> >> confirms this), and other peripherals are not traced out.
> >> So we use only RTC.
> >>
> >> This patch also adds ULI quirk to make RTC actually work (this
> >> quirk differs a bit from the one in the fsl_uli1575.c).
> >
> > Can we just one quick for both?
> 
> Probably yes, but fsl_uli1575 needs some other changes for this.
> 
> This series fully tested on MPC8610HPCD, and build-tested for
> MPC85xxDS and MPC8641HPCN.

Are these patches ideal? No comments so far... ;-)

Could we then apply this to the powerpc-next for proper testing?

-- 
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC]
  2008-05-15 16:20 ` [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
@ 2008-05-15 23:50   ` Stephen Rothwell
  2008-05-16 11:21     ` Anton Vorontsov
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen Rothwell @ 2008-05-15 23:50 UTC (permalink / raw)
  To: avorontsov; +Cc: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 776 bytes --]

Hi Anton,

This is not me picking on you, I just want to make a general statement.

On Thu, 15 May 2008 20:20:48 +0400 Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
>
> Could we then apply this to the powerpc-next for proper testing?

We should not do this.  powerpc-next feeds into linux-next which is for
inter subsystem integration testing.  Architecture specific testing
should be done before things get to -next.

I am hoping that Paul will run a separate powerpc tree/branch for powerpc
wide testing and then migrate stuff form there to powerpc-next when he is
happy that things are as good as we can get.  This does not mean
"perfect". :-)

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC]
  2008-05-15 23:50   ` Stephen Rothwell
@ 2008-05-16 11:21     ` Anton Vorontsov
  0 siblings, 0 replies; 7+ messages in thread
From: Anton Vorontsov @ 2008-05-16 11:21 UTC (permalink / raw)
  To: Stephen Rothwell; +Cc: linuxppc-dev

On Fri, May 16, 2008 at 09:50:27AM +1000, Stephen Rothwell wrote:
> Hi Anton,
> 
> This is not me picking on you, I just want to make a general statement.
> 
> On Thu, 15 May 2008 20:20:48 +0400 Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> >
> > Could we then apply this to the powerpc-next for proper testing?
> 
> We should not do this.  powerpc-next feeds into linux-next which is for
> inter subsystem integration testing.  Architecture specific testing
> should be done before things get to -next.

Oh.

> I am hoping that Paul will run a separate powerpc tree/branch for powerpc
> wide testing and then migrate stuff form there to powerpc-next when he is
> happy that things are as good as we can get.  This does not mean
> "perfect". :-)

Yeah, that would be great.

Thanks,

-- 
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2008-05-16 11:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-08 14:20 [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
2008-05-08 14:20 ` [PATCH 1/3] [POWERPC] implement machine specific PCI fixup calls Anton Vorontsov
2008-05-08 14:20 ` [PATCH 2/3] [POWERPC] turn fsl_uli1575 into PCI fixups library Anton Vorontsov
2008-05-08 14:20 ` [PATCH 3/3] [POWERPC] fsl_uli1575: change RTC quirk to work on MPC8610HPCD Anton Vorontsov
2008-05-15 16:20 ` [RFC PATCH 0/3] Board-specific PCI fixups [was: Re: [PATCH 2/2] [POWERPC] 86xx: mpc8610_hpcd: add support for ULI RTC] Anton Vorontsov
2008-05-15 23:50   ` Stephen Rothwell
2008-05-16 11:21     ` Anton Vorontsov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).