* [PATCH V2 0/2] powerpc: Add support for GE IMP3A @ 2012-03-12 17:12 Martyn Welch 2012-03-12 17:12 ` [PATCH v3 1/4] powerpc: Add GE FPGA config option Martyn Welch ` (4 more replies) 0 siblings, 5 replies; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:12 UTC (permalink / raw) To: linuxppc-dev; +Cc: Wim Van Sebroeck, Linus Walleij, linux-kernel These patches add support for the GE IMP3A. This board (based on a Freescale P2020) uses some support for FPGA logic common with the PPC9A and other 86xx based boards, so this support has been moved out of the 86xx directory. A config option (GE_FPGA) has been added to reduce churn on dependant drivers (such as the watchdog timer) when further boards are added. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 1/4] powerpc: Add GE FPGA config option 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch @ 2012-03-12 17:12 ` Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:12 ` [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem Martyn Welch ` (3 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:12 UTC (permalink / raw) To: linuxppc-dev; +Cc: Linus Walleij, linux-kernel, Martyn Welch, Wim Van Sebroeck This patch adds the GE_FPGA configuration option. This is being carried out as ground work to allow the PIC and GPIO drivers to be move from the powerpc 86xx platform directory to more general locations to allow them to be used on non-86xx boards and to reduce churn when further boards using these drivers are added. Signed-off-by: Martyn Welch <martyn.welch@ge.com> --- v3: Broken out from patch moving PIC and GPIO drivers arch/powerpc/platforms/86xx/Kconfig | 7 +++++++ arch/powerpc/platforms/86xx/Makefile | 7 ++++--- drivers/watchdog/Kconfig | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig index 8d6599d..abe2c4f 100644 --- a/arch/powerpc/platforms/86xx/Kconfig +++ b/arch/powerpc/platforms/86xx/Kconfig @@ -39,6 +39,7 @@ config GEF_PPC9A select MMIO_NVRAM select GENERIC_GPIO select ARCH_REQUIRE_GPIOLIB + select GE_FPGA help This option enables support for the GE PPC9A. @@ -48,6 +49,7 @@ config GEF_SBC310 select MMIO_NVRAM select GENERIC_GPIO select ARCH_REQUIRE_GPIOLIB + select GE_FPGA help This option enables support for the GE SBC310. @@ -57,10 +59,15 @@ config GEF_SBC610 select MMIO_NVRAM select GENERIC_GPIO select ARCH_REQUIRE_GPIOLIB + select GE_FPGA select HAS_RAPIDIO help This option enables support for the GE SBC610. +config GE_FPGA + bool + default n + endif config MPC8641 diff --git a/arch/powerpc/platforms/86xx/Makefile b/arch/powerpc/platforms/86xx/Makefile index 4b0d7b1..ac6a50f 100644 --- a/arch/powerpc/platforms/86xx/Makefile +++ b/arch/powerpc/platforms/86xx/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_MPC8641_HPCN) += mpc86xx_hpcn.o obj-$(CONFIG_SBC8641D) += sbc8641d.o obj-$(CONFIG_MPC8610_HPCD) += mpc8610_hpcd.o gef-gpio-$(CONFIG_GPIOLIB) += gef_gpio.o -obj-$(CONFIG_GEF_SBC610) += gef_sbc610.o gef_pic.o $(gef-gpio-y) -obj-$(CONFIG_GEF_SBC310) += gef_sbc310.o gef_pic.o $(gef-gpio-y) -obj-$(CONFIG_GEF_PPC9A) += gef_ppc9a.o gef_pic.o $(gef-gpio-y) +obj-$(CONFIG_GE_FPGA) += gef_pic.o $(gef-gpio-y) +obj-$(CONFIG_GEF_SBC610) += gef_sbc610.o +obj-$(CONFIG_GEF_SBC310) += gef_sbc310.o +obj-$(CONFIG_GEF_PPC9A) += gef_ppc9a.o diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 877b107..2955c3f 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1039,7 +1039,7 @@ config LANTIQ_WDT config GEF_WDT tristate "GE Watchdog Timer" - depends on GEF_SBC610 || GEF_SBC310 || GEF_PPC9A + depends on GE_FPGA ---help--- Watchdog timer found in a number of GE single board computers. -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 1/4] powerpc: Add GE FPGA config option 2012-03-12 17:12 ` [PATCH v3 1/4] powerpc: Add GE FPGA config option Martyn Welch @ 2012-03-16 16:13 ` Kumar Gala 0 siblings, 0 replies; 13+ messages in thread From: Kumar Gala @ 2012-03-16 16:13 UTC (permalink / raw) To: Martyn Welch; +Cc: Wim Van Sebroeck, linuxppc-dev, linux-kernel, Linus Walleij On Mar 12, 2012, at 12:12 PM, Martyn Welch wrote: > This patch adds the GE_FPGA configuration option. This is being carried > out as ground work to allow the PIC and GPIO drivers to be move from the > powerpc 86xx platform directory to more general locations to allow them to > be used on non-86xx boards and to reduce churn when further boards using > these drivers are added. > > Signed-off-by: Martyn Welch <martyn.welch@ge.com> > --- > > v3: Broken out from patch moving PIC and GPIO drivers > > arch/powerpc/platforms/86xx/Kconfig | 7 +++++++ > arch/powerpc/platforms/86xx/Makefile | 7 ++++--- > drivers/watchdog/Kconfig | 2 +- > 3 files changed, 12 insertions(+), 4 deletions(-) applied - k ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch 2012-03-12 17:12 ` [PATCH v3 1/4] powerpc: Add GE FPGA config option Martyn Welch @ 2012-03-12 17:12 ` Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:12 ` [PATCH v3 3/4] powerpc: Move GE PIC drivers Martyn Welch ` (2 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:12 UTC (permalink / raw) To: linuxppc-dev; +Cc: Linus Walleij, linux-kernel, Martyn Welch, Wim Van Sebroeck The GE GPIO driver provides basic support (set direction, read/write state) for the GPIO provided on some GE single board computers. This patch moves the driver from the 86xx specific platform directrory to the GPIO subsystem so that it can be used on non-86xx boards. Signed-off-by: Martyn Welch <martyn.welch@ge.com> --- v3: Split out from patch moving PIC and GPIO driver. Moving to gpio subsystem instead of sysdev. arch/powerpc/configs/86xx/gef_ppc9a_defconfig | 1 + arch/powerpc/configs/86xx/gef_sbc310_defconfig | 1 + arch/powerpc/configs/86xx/gef_sbc610_defconfig | 2 ++ arch/powerpc/platforms/86xx/Makefile | 3 +-- drivers/gpio/Kconfig | 11 +++++++++++ drivers/gpio/Makefile | 1 + .../86xx/gef_gpio.c => drivers/gpio/gpio-ge.c | 2 +- 7 files changed, 18 insertions(+), 3 deletions(-) rename arch/powerpc/platforms/86xx/gef_gpio.c => drivers/gpio/gpio-ge.c (98%) diff --git a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig b/arch/powerpc/configs/86xx/gef_ppc9a_defconfig index d41857a..da731c2 100644 --- a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig +++ b/arch/powerpc/configs/86xx/gef_ppc9a_defconfig @@ -131,6 +131,7 @@ CONFIG_I2C=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MPC=y CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GE_FPGA=y CONFIG_SENSORS_LM90=y CONFIG_SENSORS_LM92=y CONFIG_WATCHDOG=y diff --git a/arch/powerpc/configs/86xx/gef_sbc310_defconfig b/arch/powerpc/configs/86xx/gef_sbc310_defconfig index 38303ec..2149360 100644 --- a/arch/powerpc/configs/86xx/gef_sbc310_defconfig +++ b/arch/powerpc/configs/86xx/gef_sbc310_defconfig @@ -132,6 +132,7 @@ CONFIG_I2C=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MPC=y CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GE_FPGA=y CONFIG_SENSORS_LM90=y CONFIG_SENSORS_LM92=y CONFIG_WATCHDOG=y diff --git a/arch/powerpc/configs/86xx/gef_sbc610_defconfig b/arch/powerpc/configs/86xx/gef_sbc610_defconfig index 9853397..af2e8e1 100644 --- a/arch/powerpc/configs/86xx/gef_sbc610_defconfig +++ b/arch/powerpc/configs/86xx/gef_sbc610_defconfig @@ -183,6 +183,8 @@ CONFIG_NVRAM=y CONFIG_I2C=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MPC=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GE_FPGA=y CONFIG_SENSORS_LM90=y CONFIG_SENSORS_LM92=y CONFIG_WATCHDOG=y diff --git a/arch/powerpc/platforms/86xx/Makefile b/arch/powerpc/platforms/86xx/Makefile index ac6a50f..1ee6ca8 100644 --- a/arch/powerpc/platforms/86xx/Makefile +++ b/arch/powerpc/platforms/86xx/Makefile @@ -7,8 +7,7 @@ obj-$(CONFIG_SMP) += mpc86xx_smp.o obj-$(CONFIG_MPC8641_HPCN) += mpc86xx_hpcn.o obj-$(CONFIG_SBC8641D) += sbc8641d.o obj-$(CONFIG_MPC8610_HPCD) += mpc8610_hpcd.o -gef-gpio-$(CONFIG_GPIOLIB) += gef_gpio.o -obj-$(CONFIG_GE_FPGA) += gef_pic.o $(gef-gpio-y) +obj-$(CONFIG_GE_FPGA) += gef_pic.o obj-$(CONFIG_GEF_SBC610) += gef_sbc610.o obj-$(CONFIG_GEF_SBC310) += gef_sbc310.o obj-$(CONFIG_GEF_PPC9A) += gef_ppc9a.o diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index d0c4118..0409cf3 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -190,6 +190,17 @@ config GPIO_VX855 additional drivers must be enabled in order to use the functionality of the device. +config GPIO_GE_FPGA + bool "GE FPGA based GPIO" + depends on GE_FPGA + help + Support for common GPIO functionality provided on some GE Single Board + Computers. + + This driver provides basic support (configure as input or output, read + and write pin state) for GPIO implemented in a number of GE single + board computers. + comment "I2C GPIO expanders:" config GPIO_MAX7300 diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index fa10df6..9a8fb54 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -16,6 +16,7 @@ obj-$(CONFIG_GPIO_CS5535) += gpio-cs5535.o obj-$(CONFIG_GPIO_DA9052) += gpio-da9052.o obj-$(CONFIG_ARCH_DAVINCI) += gpio-davinci.o obj-$(CONFIG_GPIO_EP93XX) += gpio-ep93xx.o +obj-$(CONFIG_GPIO_GE_FPGA) += gpio-ge.o obj-$(CONFIG_GPIO_IT8761E) += gpio-it8761e.o obj-$(CONFIG_GPIO_JANZ_TTL) += gpio-janz-ttl.o obj-$(CONFIG_ARCH_KS8695) += gpio-ks8695.o diff --git a/arch/powerpc/platforms/86xx/gef_gpio.c b/drivers/gpio/gpio-ge.c similarity index 98% rename from arch/powerpc/platforms/86xx/gef_gpio.c rename to drivers/gpio/gpio-ge.c index 2a70336..f8e6289 100644 --- a/arch/powerpc/platforms/86xx/gef_gpio.c +++ b/drivers/gpio/gpio-ge.c @@ -14,7 +14,7 @@ * * Configuration of output modes (totem-pole/open-drain) * Interrupt configuration - interrupts are always generated the FPGA relies on - * the I/O interrupt controllers mask to stop them propergating + * the I/O interrupt controllers mask to stop them propergating */ #include <linux/kernel.h> -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem 2012-03-12 17:12 ` [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem Martyn Welch @ 2012-03-16 16:13 ` Kumar Gala 0 siblings, 0 replies; 13+ messages in thread From: Kumar Gala @ 2012-03-16 16:13 UTC (permalink / raw) To: Martyn Welch; +Cc: Wim Van Sebroeck, linuxppc-dev, linux-kernel, Linus Walleij On Mar 12, 2012, at 12:12 PM, Martyn Welch wrote: > The GE GPIO driver provides basic support (set direction, read/write = state) > for the GPIO provided on some GE single board computers. This patch = moves > the driver from the 86xx specific platform directrory to the GPIO = subsystem > so that it can be used on non-86xx boards. >=20 > Signed-off-by: Martyn Welch <martyn.welch@ge.com> > --- >=20 > v3: Split out from patch moving PIC and GPIO driver. Moving to gpio = subsystem > instead of sysdev. >=20 > arch/powerpc/configs/86xx/gef_ppc9a_defconfig | 1 + > arch/powerpc/configs/86xx/gef_sbc310_defconfig | 1 + > arch/powerpc/configs/86xx/gef_sbc610_defconfig | 2 ++ > arch/powerpc/platforms/86xx/Makefile | 3 +-- > drivers/gpio/Kconfig | 11 +++++++++++ > drivers/gpio/Makefile | 1 + > .../86xx/gef_gpio.c =3D> drivers/gpio/gpio-ge.c | 2 +- > 7 files changed, 18 insertions(+), 3 deletions(-) > rename arch/powerpc/platforms/86xx/gef_gpio.c =3D> = drivers/gpio/gpio-ge.c (98%) applied - k= ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 3/4] powerpc: Move GE PIC drivers 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch 2012-03-12 17:12 ` [PATCH v3 1/4] powerpc: Add GE FPGA config option Martyn Welch 2012-03-12 17:12 ` [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem Martyn Welch @ 2012-03-12 17:12 ` Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:13 ` [PATCH v3 4/4] powerpc: Board support for GE IMP3A Martyn Welch 2012-03-12 17:16 ` [PATCH V2 0/2] powerpc: Add " Martyn Welch 4 siblings, 1 reply; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:12 UTC (permalink / raw) To: linuxppc-dev; +Cc: Linus Walleij, linux-kernel, Martyn Welch, Wim Van Sebroeck Move the GE PIC drivers to allow these to be used by non-86xx boards. Signed-off-by: Martyn Welch <martyn.welch@ge.com> --- v2: Move GPIO and PIC drivers to sysdev/ge/ rather than platforms/. v3: Now just PIC driver. GPIO driver going to drivers/gpio. arch/powerpc/platforms/86xx/Kconfig | 4 ---- arch/powerpc/platforms/86xx/Makefile | 1 - arch/powerpc/platforms/86xx/gef_ppc9a.c | 2 +- arch/powerpc/platforms/86xx/gef_sbc310.c | 2 +- arch/powerpc/platforms/86xx/gef_sbc610.c | 2 +- arch/powerpc/sysdev/Kconfig | 4 ++++ arch/powerpc/sysdev/Makefile | 2 ++ arch/powerpc/sysdev/ge/Makefile | 1 + .../86xx/gef_pic.c => sysdev/ge/ge_pic.c} | 2 +- .../86xx/gef_pic.h => sysdev/ge/ge_pic.h} | 0 10 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 arch/powerpc/sysdev/ge/Makefile rename arch/powerpc/{platforms/86xx/gef_pic.c => sysdev/ge/ge_pic.c} (99%) rename arch/powerpc/{platforms/86xx/gef_pic.h => sysdev/ge/ge_pic.h} (100%) diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig index abe2c4f..7a6279e 100644 --- a/arch/powerpc/platforms/86xx/Kconfig +++ b/arch/powerpc/platforms/86xx/Kconfig @@ -64,10 +64,6 @@ config GEF_SBC610 help This option enables support for the GE SBC610. -config GE_FPGA - bool - default n - endif config MPC8641 diff --git a/arch/powerpc/platforms/86xx/Makefile b/arch/powerpc/platforms/86xx/Makefile index 1ee6ca8..ede815d 100644 --- a/arch/powerpc/platforms/86xx/Makefile +++ b/arch/powerpc/platforms/86xx/Makefile @@ -7,7 +7,6 @@ obj-$(CONFIG_SMP) += mpc86xx_smp.o obj-$(CONFIG_MPC8641_HPCN) += mpc86xx_hpcn.o obj-$(CONFIG_SBC8641D) += sbc8641d.o obj-$(CONFIG_MPC8610_HPCD) += mpc8610_hpcd.o -obj-$(CONFIG_GE_FPGA) += gef_pic.o obj-$(CONFIG_GEF_SBC610) += gef_sbc610.o obj-$(CONFIG_GEF_SBC310) += gef_sbc310.o obj-$(CONFIG_GEF_PPC9A) += gef_ppc9a.o diff --git a/arch/powerpc/platforms/86xx/gef_ppc9a.c b/arch/powerpc/platforms/86xx/gef_ppc9a.c index 60ce07e..ed58b6c 100644 --- a/arch/powerpc/platforms/86xx/gef_ppc9a.c +++ b/arch/powerpc/platforms/86xx/gef_ppc9a.c @@ -37,9 +37,9 @@ #include <sysdev/fsl_pci.h> #include <sysdev/fsl_soc.h> +#include <sysdev/ge/ge_pic.h> #include "mpc86xx.h" -#include "gef_pic.h" #undef DEBUG diff --git a/arch/powerpc/platforms/86xx/gef_sbc310.c b/arch/powerpc/platforms/86xx/gef_sbc310.c index 3ecee25..710db69 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc310.c +++ b/arch/powerpc/platforms/86xx/gef_sbc310.c @@ -37,9 +37,9 @@ #include <sysdev/fsl_pci.h> #include <sysdev/fsl_soc.h> +#include <sysdev/ge/ge_pic.h> #include "mpc86xx.h" -#include "gef_pic.h" #undef DEBUG diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c index 5090d60..4a13d2f 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc610.c +++ b/arch/powerpc/platforms/86xx/gef_sbc610.c @@ -37,9 +37,9 @@ #include <sysdev/fsl_pci.h> #include <sysdev/fsl_soc.h> +#include <sysdev/ge/ge_pic.h> #include "mpc86xx.h" -#include "gef_pic.h" #undef DEBUG diff --git a/arch/powerpc/sysdev/Kconfig b/arch/powerpc/sysdev/Kconfig index 7b4df37..a84fecf 100644 --- a/arch/powerpc/sysdev/Kconfig +++ b/arch/powerpc/sysdev/Kconfig @@ -29,3 +29,7 @@ config SCOM_DEBUGFS bool "Expose SCOM controllers via debugfs" depends on PPC_SCOM default n + +config GE_FPGA + bool + default n diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index 5e37b47..f80ff9f 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile @@ -65,3 +65,5 @@ obj-$(CONFIG_PPC_SCOM) += scom.o subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror obj-$(CONFIG_PPC_XICS) += xics/ + +obj-$(CONFIG_GE_FPGA) += ge/ diff --git a/arch/powerpc/sysdev/ge/Makefile b/arch/powerpc/sysdev/ge/Makefile new file mode 100644 index 0000000..8731ffc --- /dev/null +++ b/arch/powerpc/sysdev/ge/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_GE_FPGA) += ge_pic.o diff --git a/arch/powerpc/platforms/86xx/gef_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c similarity index 99% rename from arch/powerpc/platforms/86xx/gef_pic.c rename to arch/powerpc/sysdev/ge/ge_pic.c index 94594e5..002a562 100644 --- a/arch/powerpc/platforms/86xx/gef_pic.c +++ b/arch/powerpc/sysdev/ge/ge_pic.c @@ -22,7 +22,7 @@ #include <asm/prom.h> #include <asm/irq.h> -#include "gef_pic.h" +#include "ge_pic.h" #define DEBUG #undef DEBUG diff --git a/arch/powerpc/platforms/86xx/gef_pic.h b/arch/powerpc/sysdev/ge/ge_pic.h similarity index 100% rename from arch/powerpc/platforms/86xx/gef_pic.h rename to arch/powerpc/sysdev/ge/ge_pic.h -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/4] powerpc: Move GE PIC drivers 2012-03-12 17:12 ` [PATCH v3 3/4] powerpc: Move GE PIC drivers Martyn Welch @ 2012-03-16 16:13 ` Kumar Gala 0 siblings, 0 replies; 13+ messages in thread From: Kumar Gala @ 2012-03-16 16:13 UTC (permalink / raw) To: Martyn Welch; +Cc: Wim Van Sebroeck, linuxppc-dev, linux-kernel, Linus Walleij On Mar 12, 2012, at 12:12 PM, Martyn Welch wrote: > Move the GE PIC drivers to allow these to be used by non-86xx boards. > > Signed-off-by: Martyn Welch <martyn.welch@ge.com> > --- > > v2: Move GPIO and PIC drivers to sysdev/ge/ rather than platforms/. > > v3: Now just PIC driver. GPIO driver going to drivers/gpio. > > arch/powerpc/platforms/86xx/Kconfig | 4 ---- > arch/powerpc/platforms/86xx/Makefile | 1 - > arch/powerpc/platforms/86xx/gef_ppc9a.c | 2 +- > arch/powerpc/platforms/86xx/gef_sbc310.c | 2 +- > arch/powerpc/platforms/86xx/gef_sbc610.c | 2 +- > arch/powerpc/sysdev/Kconfig | 4 ++++ > arch/powerpc/sysdev/Makefile | 2 ++ > arch/powerpc/sysdev/ge/Makefile | 1 + > .../86xx/gef_pic.c => sysdev/ge/ge_pic.c} | 2 +- > .../86xx/gef_pic.h => sysdev/ge/ge_pic.h} | 0 > 10 files changed, 11 insertions(+), 9 deletions(-) > create mode 100644 arch/powerpc/sysdev/ge/Makefile > rename arch/powerpc/{platforms/86xx/gef_pic.c => sysdev/ge/ge_pic.c} (99%) > rename arch/powerpc/{platforms/86xx/gef_pic.h => sysdev/ge/ge_pic.h} (100%) applied - k ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 4/4] powerpc: Board support for GE IMP3A 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch ` (2 preceding siblings ...) 2012-03-12 17:12 ` [PATCH v3 3/4] powerpc: Move GE PIC drivers Martyn Welch @ 2012-03-12 17:13 ` Martyn Welch 2012-03-13 11:51 ` Linus Walleij 2012-03-16 16:14 ` Kumar Gala 2012-03-12 17:16 ` [PATCH V2 0/2] powerpc: Add " Martyn Welch 4 siblings, 2 replies; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:13 UTC (permalink / raw) To: linuxppc-dev; +Cc: Linus Walleij, linux-kernel, Martyn Welch, Wim Van Sebroeck Initial board support for the GE IMP3A, a 3U compactPCI card with a p2020 processor. Signed-off-by: Martyn Welch <martyn.welch@ge.com> --- v2: Rebase patch onto powerpc/next, taking work by Kyle Moffett into account. v3: Correct detection of interrupt controller. arch/powerpc/boot/dts/ge_imp3a.dts | 255 ++++++++++++++++++++++++++++++ arch/powerpc/configs/ge_imp3a_defconfig | 257 +++++++++++++++++++++++++++++++ arch/powerpc/platforms/85xx/Kconfig | 15 ++ arch/powerpc/platforms/85xx/Makefile | 1 + arch/powerpc/platforms/85xx/ge_imp3a.c | 246 +++++++++++++++++++++++++++++ drivers/gpio/gpio-ge.c | 28 ++++ 6 files changed, 802 insertions(+), 0 deletions(-) create mode 100644 arch/powerpc/boot/dts/ge_imp3a.dts create mode 100644 arch/powerpc/configs/ge_imp3a_defconfig create mode 100644 arch/powerpc/platforms/85xx/ge_imp3a.c diff --git a/arch/powerpc/boot/dts/ge_imp3a.dts b/arch/powerpc/boot/dts/ge_imp3a.dts new file mode 100644 index 0000000..fefae41 --- /dev/null +++ b/arch/powerpc/boot/dts/ge_imp3a.dts @@ -0,0 +1,255 @@ +/* + * GE IMP3A Device Tree Source + * + * Copyright 2010-2011 GE Intelligent Platforms Embedded Systems, Inc. + * + * 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. + * + * Based on: P2020 DS Device Tree Source + * Copyright 2009 Freescale Semiconductor Inc. + */ + +/include/ "fsl/p2020si-pre.dtsi" + +/ { + model = "GE_IMP3A"; + compatible = "ge,imp3a"; + + memory { + device_type = "memory"; + }; + + lbc: localbus@fef05000 { + reg = <0 0xfef05000 0 0x1000>; + + ranges = <0x0 0x0 0x0 0xff000000 0x01000000 + 0x1 0x0 0x0 0xe0000000 0x08000000 + 0x2 0x0 0x0 0xe8000000 0x08000000 + 0x3 0x0 0x0 0xfc100000 0x00020000 + 0x4 0x0 0x0 0xfc000000 0x00008000 + 0x5 0x0 0x0 0xfc008000 0x00008000 + 0x6 0x0 0x0 0xfee00000 0x00040000 + 0x7 0x0 0x0 0xfee80000 0x00040000>; + + /* nor@0,0 is a mirror of part of the memory in nor@1,0 + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ge,imp3a-firmware-mirror", "cfi-flash"; + reg = <0x0 0x0 0x1000000>; + bank-width = <2>; + device-width = <1>; + + partition@0 { + label = "firmware"; + reg = <0x0 0x1000000>; + read-only; + }; + }; + */ + + nor@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ge,imp3a-paged-flash", "cfi-flash"; + reg = <0x1 0x0 0x8000000>; + bank-width = <2>; + device-width = <1>; + + partition@0 { + label = "user"; + reg = <0x0 0x7800000>; + }; + + partition@7800000 { + label = "firmware"; + reg = <0x7800000 0x800000>; + read-only; + }; + }; + + nvram@3,0 { + device_type = "nvram"; + compatible = "simtek,stk14ca8"; + reg = <0x3 0x0 0x20000>; + }; + + fpga@4,0 { + compatible = "ge,imp3a-fpga-regs"; + reg = <0x4 0x0 0x20>; + }; + + gef_pic: pic@4,20 { + #interrupt-cells = <1>; + interrupt-controller; + device_type = "interrupt-controller"; + compatible = "ge,imp3a-fpga-pic", "gef,fpga-pic-1.00"; + reg = <0x4 0x20 0x20>; + interrupts = <6 7 0 0>; + }; + + gef_gpio: gpio@4,400 { + #gpio-cells = <2>; + compatible = "ge,imp3a-gpio"; + reg = <0x4 0x400 0x24>; + gpio-controller; + }; + + wdt@4,800 { + compatible = "ge,imp3a-fpga-wdt", "gef,fpga-wdt-1.00", + "gef,fpga-wdt"; + reg = <0x4 0x800 0x8>; + interrupts = <10 4>; + interrupt-parent = <&gef_pic>; + }; + + /* Second watchdog available, driver currently supports one. + wdt@4,808 { + compatible = "gef,imp3a-fpga-wdt", "gef,fpga-wdt-1.00", + "gef,fpga-wdt"; + reg = <0x4 0x808 0x8>; + interrupts = <9 4>; + interrupt-parent = <&gef_pic>; + }; + */ + + nand@6,0 { + compatible = "fsl,elbc-fcm-nand"; + reg = <0x6 0x0 0x40000>; + }; + + nand@7,0 { + compatible = "fsl,elbc-fcm-nand"; + reg = <0x7 0x0 0x40000>; + }; + }; + + soc: soc@fef00000 { + ranges = <0x0 0 0xfef00000 0x100000>; + + i2c@3000 { + hwmon@48 { + compatible = "national,lm92"; + reg = <0x48>; + }; + + hwmon@4c { + compatible = "adi,adt7461"; + reg = <0x4c>; + }; + + rtc@51 { + compatible = "epson,rx8581"; + reg = <0x51>; + }; + + eti@6b { + compatible = "dallas,ds1682"; + reg = <0x6b>; + }; + }; + + usb@22000 { + phy_type = "ulpi"; + dr_mode = "host"; + }; + + mdio@24520 { + phy0: ethernet-phy@0 { + interrupt-parent = <&gef_pic>; + interrupts = <0xc 0x4>; + reg = <0x1>; + }; + phy1: ethernet-phy@1 { + interrupt-parent = <&gef_pic>; + interrupts = <0xb 0x4>; + reg = <0x2>; + }; + tbi0: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + + mdio@25520 { + tbi1: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + + mdio@26520 { + status = "disabled"; + }; + + enet0: ethernet@24000 { + tbi-handle = <&tbi0>; + phy-handle = <&phy0>; + phy-connection-type = "gmii"; + }; + + enet1: ethernet@25000 { + tbi-handle = <&tbi1>; + phy-handle = <&phy1>; + phy-connection-type = "gmii"; + }; + + enet2: ethernet@26000 { + status = "disabled"; + }; + }; + + pci0: pcie@fef08000 { + ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 + 0x1000000 0x0 0x00000000 0 0xfe020000 0x0 0x10000>; + reg = <0 0xfef08000 0 0x1000>; + + pcie@0 { + ranges = <0x2000000 0x0 0xc0000000 + 0x2000000 0x0 0xc0000000 + 0x0 0x20000000 + + 0x1000000 0x0 0x0 + 0x1000000 0x0 0x0 + 0x0 0x10000>; + }; + }; + + pci1: pcie@fef09000 { + reg = <0 0xfef09000 0 0x1000>; + ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 + 0x1000000 0x0 0x00000000 0 0xfe010000 0x0 0x10000>; + + pcie@0 { + ranges = <0x2000000 0x0 0xa0000000 + 0x2000000 0x0 0xa0000000 + 0x0 0x20000000 + + 0x1000000 0x0 0x0 + 0x1000000 0x0 0x0 + 0x0 0x10000>; + }; + + }; + + pci2: pcie@fef0a000 { + reg = <0 0xfef0a000 0 0x1000>; + ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 + 0x1000000 0x0 0x00000000 0 0xfe000000 0x0 0x10000>; + + pcie@0 { + ranges = <0x2000000 0x0 0x80000000 + 0x2000000 0x0 0x80000000 + 0x0 0x20000000 + + 0x1000000 0x0 0x0 + 0x1000000 0x0 0x0 + 0x0 0x10000>; + }; + }; +}; + +/include/ "fsl/p2020si-post.dtsi" diff --git a/arch/powerpc/configs/ge_imp3a_defconfig b/arch/powerpc/configs/ge_imp3a_defconfig new file mode 100644 index 0000000..f8c51a4 --- /dev/null +++ b/arch/powerpc/configs/ge_imp3a_defconfig @@ -0,0 +1,257 @@ +CONFIG_PPC_85xx=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_SPARSE_IRQ=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_PERF_EVENTS=y +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_GE_IMP3A=y +CONFIG_QUICC_ENGINE=y +CONFIG_QE_GPIO=y +CONFIG_CPM2=y +CONFIG_HIGHMEM=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_HZ_1000=y +CONFIG_PREEMPT=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_MISC=m +CONFIG_MATH_EMULATION=y +CONFIG_IRQ_ALL_CPUS=y +CONFIG_FORCE_MAX_ZONEORDER=17 +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_YENTA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=m +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +# CONFIG_INET_XFRM_MODE_BEET is not set +CONFIG_INET6_AH=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_NET_PKTGEN=m +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_FSL_ELBC=y +CONFIG_PROC_DEVICETREE=y +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_MISC_DEVICES=y +CONFIG_DS1682=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_BLK_DEV_SR=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_SIL24=y +# CONFIG_ATA_SFF is not set +CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_NETCONSOLE=y +CONFIG_NETPOLL_TRAP=y +CONFIG_TUN=m +# CONFIG_NET_VENDOR_3COM is not set +CONFIG_FS_ENET=y +CONFIG_UCC_GETH=y +CONFIG_GIANFAR=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_QE=m +CONFIG_NVRAM=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_CPM=m +CONFIG_I2C_MPC=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GE_FPGA=y +CONFIG_SENSORS_LM90=y +CONFIG_SENSORS_LM92=y +CONFIG_WATCHDOG=y +CONFIG_GEF_WDT=y +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_HID_DRAGONRISE=y +CONFIG_HID_GYRATION=y +CONFIG_HID_TWINHAN=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_GREENASIA=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_HID_ZEROPLUS=y +CONFIG_USB=y +CONFIG_USB_DEVICEFS=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_OHCI_HCD_PPC_OF_LE=y +CONFIG_USB_STORAGE=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=y +CONFIG_EDAC_MPC85XX=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_INTF_PROC is not set +CONFIG_RTC_DRV_RX8581=y +CONFIG_DMADEVICES=y +CONFIG_FSL_DMA=y +# CONFIG_NET_DMA is not set +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=850 +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_NTFS_FS=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=y +CONFIG_CRC_CCITT=y +CONFIG_CRC_T10DIF=y +CONFIG_LIBCRC32C=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DEV_TALITOS=y diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index d7946be..db29803 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig @@ -171,6 +171,21 @@ config SBC8560 help This option enables support for the Wind River SBC8560 board +config GE_IMP3A + bool "GE Intelligent Platforms IMP3A" + select DEFAULT_UIMAGE + select SWIOTLB + select MMIO_NVRAM + select GENERIC_GPIO + select ARCH_REQUIRE_GPIOLIB + select GE_FPGA + help + This option enables support for the GE Intelligent Platforms IMP3A + board. + + This board is a 3U CompactPCI Single Board Computer with a Freescale + P2020 processor. + config P2041_RDB bool "Freescale P2041 RDB" select DEFAULT_UIMAGE diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile index 9cb2d43..2125d4c 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile @@ -27,3 +27,4 @@ obj-$(CONFIG_SBC8548) += sbc8548.o obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o obj-$(CONFIG_KSI8560) += ksi8560.o obj-$(CONFIG_XES_MPC85xx) += xes_mpc85xx.o +obj-$(CONFIG_GE_IMP3A) += ge_imp3a.o diff --git a/arch/powerpc/platforms/85xx/ge_imp3a.c b/arch/powerpc/platforms/85xx/ge_imp3a.c new file mode 100644 index 0000000..d50056f --- /dev/null +++ b/arch/powerpc/platforms/85xx/ge_imp3a.c @@ -0,0 +1,246 @@ +/* + * GE IMP3A Board Setup + * + * Author Martyn Welch <martyn.welch@ge.com> + * + * Copyright 2010 GE Intelligent Platforms Embedded Systems, Inc. + * + * 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. + * + * Based on: mpc85xx_ds.c (MPC85xx DS Board Setup) + * Copyright 2007 Freescale Semiconductor Inc. + */ + +#include <linux/stddef.h> +#include <linux/kernel.h> +#include <linux/pci.h> +#include <linux/kdev_t.h> +#include <linux/delay.h> +#include <linux/seq_file.h> +#include <linux/interrupt.h> +#include <linux/of_platform.h> +#include <linux/memblock.h> + +#include <asm/system.h> +#include <asm/time.h> +#include <asm/machdep.h> +#include <asm/pci-bridge.h> +#include <mm/mmu_decl.h> +#include <asm/prom.h> +#include <asm/udbg.h> +#include <asm/mpic.h> +#include <asm/swiotlb.h> +#include <asm/nvram.h> + +#include <sysdev/fsl_soc.h> +#include <sysdev/fsl_pci.h> +#include "smp.h" + +#include "mpc85xx.h" +#include <sysdev/ge/ge_pic.h> + +void __iomem *imp3a_regs; + +void __init ge_imp3a_pic_init(void) +{ + struct mpic *mpic; + struct device_node *np; + struct device_node *cascade_node = NULL; + unsigned long root = of_get_flat_dt_root(); + + if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) { + mpic = mpic_alloc(NULL, 0, + MPIC_NO_RESET | + MPIC_BIG_ENDIAN | + MPIC_SINGLE_DEST_CPU, + 0, 256, " OpenPIC "); + } else { + mpic = mpic_alloc(NULL, 0, + MPIC_BIG_ENDIAN | + MPIC_SINGLE_DEST_CPU, + 0, 256, " OpenPIC "); + } + + BUG_ON(mpic == NULL); + mpic_init(mpic); + /* + * There is a simple interrupt handler in the main FPGA, this needs + * to be cascaded into the MPIC + */ + for_each_node_by_type(np, "interrupt-controller") + if (of_device_is_compatible(np, "gef,fpga-pic-1.00")) { + cascade_node = np; + break; + } + + if (cascade_node == NULL) { + printk(KERN_WARNING "IMP3A: No FPGA PIC\n"); + return; + } + + gef_pic_init(cascade_node); + of_node_put(cascade_node); +} + +#ifdef CONFIG_PCI +static int primary_phb_addr; +#endif /* CONFIG_PCI */ + +/* + * Setup the architecture + */ +static void __init ge_imp3a_setup_arch(void) +{ + struct device_node *regs; +#ifdef CONFIG_PCI + struct device_node *np; + struct pci_controller *hose; +#endif + dma_addr_t max = 0xffffffff; + + if (ppc_md.progress) + ppc_md.progress("ge_imp3a_setup_arch()", 0); + +#ifdef CONFIG_PCI + for_each_node_by_type(np, "pci") { + if (of_device_is_compatible(np, "fsl,mpc8540-pci") || + of_device_is_compatible(np, "fsl,mpc8548-pcie") || + of_device_is_compatible(np, "fsl,p2020-pcie")) { + struct resource rsrc; + of_address_to_resource(np, 0, &rsrc); + if ((rsrc.start & 0xfffff) == primary_phb_addr) + fsl_add_bridge(np, 1); + else + fsl_add_bridge(np, 0); + + hose = pci_find_hose_for_OF_device(np); + max = min(max, hose->dma_window_base_cur + + hose->dma_window_size); + } + } +#endif + + mpc85xx_smp_init(); + +#ifdef CONFIG_SWIOTLB + if (memblock_end_of_DRAM() > max) { + ppc_swiotlb_enable = 1; + set_pci_dma_ops(&swiotlb_dma_ops); + ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; + } +#endif + + /* Remap basic board registers */ + regs = of_find_compatible_node(NULL, NULL, "ge,imp3a-fpga-regs"); + if (regs) { + imp3a_regs = of_iomap(regs, 0); + if (imp3a_regs == NULL) + printk(KERN_WARNING "Unable to map board registers\n"); + of_node_put(regs); + } + +#if defined(CONFIG_MMIO_NVRAM) + mmio_nvram_init(); +#endif + + printk(KERN_INFO "GE Intelligent Platforms IMP3A 3U cPCI SBC\n"); +} + +/* Return the PCB revision */ +static unsigned int ge_imp3a_get_pcb_rev(void) +{ + unsigned int reg; + + reg = ioread16(imp3a_regs); + return (reg >> 8) & 0xff; +} + +/* Return the board (software) revision */ +static unsigned int ge_imp3a_get_board_rev(void) +{ + unsigned int reg; + + reg = ioread16(imp3a_regs + 0x2); + return reg & 0xff; +} + +/* Return the FPGA revision */ +static unsigned int ge_imp3a_get_fpga_rev(void) +{ + unsigned int reg; + + reg = ioread16(imp3a_regs + 0x2); + return (reg >> 8) & 0xff; +} + +/* Return compactPCI Geographical Address */ +static unsigned int ge_imp3a_get_cpci_geo_addr(void) +{ + unsigned int reg; + + reg = ioread16(imp3a_regs + 0x6); + return (reg & 0x0f00) >> 8; +} + +/* Return compactPCI System Controller Status */ +static unsigned int ge_imp3a_get_cpci_is_syscon(void) +{ + unsigned int reg; + + reg = ioread16(imp3a_regs + 0x6); + return reg & (1 << 12); +} + +static void ge_imp3a_show_cpuinfo(struct seq_file *m) +{ + seq_printf(m, "Vendor\t\t: GE Intelligent Platforms\n"); + + seq_printf(m, "Revision\t: %u%c\n", ge_imp3a_get_pcb_rev(), + ('A' + ge_imp3a_get_board_rev() - 1)); + + seq_printf(m, "FPGA Revision\t: %u\n", ge_imp3a_get_fpga_rev()); + + seq_printf(m, "cPCI geo. addr\t: %u\n", ge_imp3a_get_cpci_geo_addr()); + + seq_printf(m, "cPCI syscon\t: %s\n", + ge_imp3a_get_cpci_is_syscon() ? "yes" : "no"); +} + +/* + * Called very early, device-tree isn't unflattened + */ +static int __init ge_imp3a_probe(void) +{ + unsigned long root = of_get_flat_dt_root(); + + if (of_flat_dt_is_compatible(root, "ge,IMP3A")) { +#ifdef CONFIG_PCI + primary_phb_addr = 0x9000; +#endif + return 1; + } + + return 0; +} + +machine_device_initcall(ge_imp3a, mpc85xx_common_publish_devices); + +machine_arch_initcall(ge_imp3a, swiotlb_setup_bus_notifier); + +define_machine(ge_imp3a) { + .name = "GE_IMP3A", + .probe = ge_imp3a_probe, + .setup_arch = ge_imp3a_setup_arch, + .init_IRQ = ge_imp3a_pic_init, + .show_cpuinfo = ge_imp3a_show_cpuinfo, +#ifdef CONFIG_PCI + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, +#endif + .get_irq = mpic_get_irq, + .restart = fsl_rstcr_restart, + .calibrate_decr = generic_calibrate_decr, + .progress = udbg_progress, +}; diff --git a/drivers/gpio/gpio-ge.c b/drivers/gpio/gpio-ge.c index f8e6289..7b95a4a 100644 --- a/drivers/gpio/gpio-ge.c +++ b/drivers/gpio/gpio-ge.c @@ -162,6 +162,34 @@ static int __init gef_gpio_init(void) } } + for_each_compatible_node(np, NULL, "ge,imp3a-gpio") { + + pr_debug("%s: Initialising GE GPIO\n", np->full_name); + + /* Allocate chip structure */ + gef_gpio_chip = kzalloc(sizeof(*gef_gpio_chip), GFP_KERNEL); + if (!gef_gpio_chip) { + pr_err("%s: Unable to allocate structure\n", + np->full_name); + continue; + } + + /* Setup pointers to chip functions */ + gef_gpio_chip->gc.of_gpio_n_cells = 2; + gef_gpio_chip->gc.ngpio = 16; + gef_gpio_chip->gc.direction_input = gef_gpio_dir_in; + gef_gpio_chip->gc.direction_output = gef_gpio_dir_out; + gef_gpio_chip->gc.get = gef_gpio_get; + gef_gpio_chip->gc.set = gef_gpio_set; + + /* This function adds a memory mapped GPIO chip */ + retval = of_mm_gpiochip_add(np, gef_gpio_chip); + if (retval) { + kfree(gef_gpio_chip); + pr_err("%s: Unable to add GPIO\n", np->full_name); + } + } + return 0; }; arch_initcall(gef_gpio_init); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] powerpc: Board support for GE IMP3A 2012-03-12 17:13 ` [PATCH v3 4/4] powerpc: Board support for GE IMP3A Martyn Welch @ 2012-03-13 11:51 ` Linus Walleij 2012-03-13 12:32 ` Martyn Welch 2012-03-16 16:14 ` Kumar Gala 1 sibling, 1 reply; 13+ messages in thread From: Linus Walleij @ 2012-03-13 11:51 UTC (permalink / raw) To: Martyn Welch Cc: linux-kernel, Wim Van Sebroeck, Uwe Kleine-König, linuxppc-dev On Mon, Mar 12, 2012 at 6:13 PM, Martyn Welch <martyn.welch@ge.com> wrote: > Initial board support for the GE IMP3A, a 3U compactPCI card with a p2020 > processor. (...) > +++ b/arch/powerpc/configs/ge_imp3a_defconfig > @@ -0,0 +1,257 @@ > +CONFIG_PPC_85xx=y > +CONFIG_SMP=y > +CONFIG_NR_CPUS=2 > +CONFIG_EXPERIMENTAL=y > +CONFIG_SYSVIPC=y > +CONFIG_POSIX_MQUEUE=y > +CONFIG_BSD_PROCESS_ACCT=y > +CONFIG_BSD_PROCESS_ACCT_V3=y > +CONFIG_SPARSE_IRQ=y This habit of changing a lot of defconfig stuff in a patch dealing with other stuff is alien in the ARM world. Especially when changing a horde of stuff that has nothing to do with the patch subject. But I don't really know how PPC does these things so who am I to speak ... BTW: doesn't the "make saveconfig" reduce defconfigs on PPC? Paging Uwe on this. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] powerpc: Board support for GE IMP3A 2012-03-13 11:51 ` Linus Walleij @ 2012-03-13 12:32 ` Martyn Welch 2012-03-13 13:03 ` Linus Walleij 0 siblings, 1 reply; 13+ messages in thread From: Martyn Welch @ 2012-03-13 12:32 UTC (permalink / raw) To: Linus Walleij Cc: linux-kernel, Wim Van Sebroeck, Uwe Kleine-König, linuxppc-dev On 13/03/12 11:51, Linus Walleij wrote: > On Mon, Mar 12, 2012 at 6:13 PM, Martyn Welch <martyn.welch@ge.com> wrote: > >> Initial board support for the GE IMP3A, a 3U compactPCI card with a p2020 >> processor. > (...) >> +++ b/arch/powerpc/configs/ge_imp3a_defconfig >> @@ -0,0 +1,257 @@ >> +CONFIG_PPC_85xx=y >> +CONFIG_SMP=y >> +CONFIG_NR_CPUS=2 >> +CONFIG_EXPERIMENTAL=y >> +CONFIG_SYSVIPC=y >> +CONFIG_POSIX_MQUEUE=y >> +CONFIG_BSD_PROCESS_ACCT=y >> +CONFIG_BSD_PROCESS_ACCT_V3=y >> +CONFIG_SPARSE_IRQ=y > > This habit of changing a lot of defconfig stuff in a patch dealing with other > stuff is alien in the ARM world. Especially when changing a horde of stuff > that has nothing to do with the patch subject. > This is adding the defconfig, it's support for a new board: diff --git a/arch/powerpc/configs/ge_imp3a_defconfig b/arch/powerpc/configs/ge_imp3a_defconfig new file mode 100644 index 0000000..f8c51a4 --- /dev/null +++ b/arch/powerpc/configs/ge_imp3a_defconfig > But I don't really know how PPC does these things so who am I to > speak ... > > BTW: doesn't the "make saveconfig" reduce defconfigs on PPC? > Paging Uwe on this. This is the output of "make savedefconfig". Martyn -- Martyn Welch (Lead Software Engineer) | Registered in England and Wales GE Intelligent Platforms | (3828642) at 100 Barbirolli Square T +44(0)1327322748 | Manchester, M2 3AB E martyn.welch@ge.com | VAT:GB 927559189 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] powerpc: Board support for GE IMP3A 2012-03-13 12:32 ` Martyn Welch @ 2012-03-13 13:03 ` Linus Walleij 0 siblings, 0 replies; 13+ messages in thread From: Linus Walleij @ 2012-03-13 13:03 UTC (permalink / raw) To: Martyn Welch Cc: linux-kernel, Wim Van Sebroeck, Uwe Kleine-König, linuxppc-dev 2012/3/13 Martyn Welch <martyn.welch@ge.com>: > On 13/03/12 11:51, Linus Walleij wrote: >> This habit of changing a lot of defconfig stuff in a patch dealing with other >> stuff is alien in the ARM world. Especially when changing a horde of stuff >> that has nothing to do with the patch subject. >> > > This is adding the defconfig, it's support for a new board: Ah I was confused by thinking the patch series was all about GPIO. Sorry... Yours, Linus Walleij ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] powerpc: Board support for GE IMP3A 2012-03-12 17:13 ` [PATCH v3 4/4] powerpc: Board support for GE IMP3A Martyn Welch 2012-03-13 11:51 ` Linus Walleij @ 2012-03-16 16:14 ` Kumar Gala 1 sibling, 0 replies; 13+ messages in thread From: Kumar Gala @ 2012-03-16 16:14 UTC (permalink / raw) To: Martyn Welch; +Cc: Wim Van Sebroeck, linuxppc-dev, linux-kernel, Linus Walleij On Mar 12, 2012, at 12:13 PM, Martyn Welch wrote: > Initial board support for the GE IMP3A, a 3U compactPCI card with a = p2020 > processor. >=20 > Signed-off-by: Martyn Welch <martyn.welch@ge.com> > --- >=20 > v2: Rebase patch onto powerpc/next, taking work by Kyle Moffett into > account. >=20 > v3: Correct detection of interrupt controller. >=20 > arch/powerpc/boot/dts/ge_imp3a.dts | 255 = ++++++++++++++++++++++++++++++ > arch/powerpc/configs/ge_imp3a_defconfig | 257 = +++++++++++++++++++++++++++++++ > arch/powerpc/platforms/85xx/Kconfig | 15 ++ > arch/powerpc/platforms/85xx/Makefile | 1 + > arch/powerpc/platforms/85xx/ge_imp3a.c | 246 = +++++++++++++++++++++++++++++ > drivers/gpio/gpio-ge.c | 28 ++++ > 6 files changed, 802 insertions(+), 0 deletions(-) > create mode 100644 arch/powerpc/boot/dts/ge_imp3a.dts > create mode 100644 arch/powerpc/configs/ge_imp3a_defconfig > create mode 100644 arch/powerpc/platforms/85xx/ge_imp3a.c applied, moved defconfig to configs/85xx/ - k= ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH V2 0/2] powerpc: Add support for GE IMP3A 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch ` (3 preceding siblings ...) 2012-03-12 17:13 ` [PATCH v3 4/4] powerpc: Board support for GE IMP3A Martyn Welch @ 2012-03-12 17:16 ` Martyn Welch 4 siblings, 0 replies; 13+ messages in thread From: Martyn Welch @ 2012-03-12 17:16 UTC (permalink / raw) To: linuxppc-dev; +Cc: Wim Van Sebroeck, Linus Walleij, linux-kernel Whoops, forgot to correct the subject. This is v3 of the patches. I got it right in the actual patches, just the cover letter I missed. Martyn On 12/03/12 17:12, Martyn Welch wrote: > These patches add support for the GE IMP3A. This board (based on a Freescale > P2020) uses some support for FPGA logic common with the PPC9A and other 86xx > based boards, so this support has been moved out of the 86xx directory. A > config option (GE_FPGA) has been added to reduce churn on dependant drivers > (such as the watchdog timer) when further boards are added. -- Martyn Welch (Lead Software Engineer) | Registered in England and Wales GE Intelligent Platforms | (3828642) at 100 Barbirolli Square T +44(0)1327322748 | Manchester, M2 3AB E martyn.welch@ge.com | VAT:GB 927559189 ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2012-03-16 16:20 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-03-12 17:12 [PATCH V2 0/2] powerpc: Add support for GE IMP3A Martyn Welch 2012-03-12 17:12 ` [PATCH v3 1/4] powerpc: Add GE FPGA config option Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:12 ` [PATCH v3 2/4] gpio: Move GE GPIO driver to reside within GPIO subsystem Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:12 ` [PATCH v3 3/4] powerpc: Move GE PIC drivers Martyn Welch 2012-03-16 16:13 ` Kumar Gala 2012-03-12 17:13 ` [PATCH v3 4/4] powerpc: Board support for GE IMP3A Martyn Welch 2012-03-13 11:51 ` Linus Walleij 2012-03-13 12:32 ` Martyn Welch 2012-03-13 13:03 ` Linus Walleij 2012-03-16 16:14 ` Kumar Gala 2012-03-12 17:16 ` [PATCH V2 0/2] powerpc: Add " Martyn Welch
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).