Skip to content

Commit

Permalink
Merge branch 'dt' of git://github.com/hzhuang1/linux into next/dt
Browse files Browse the repository at this point in the history
From Haojian Zhuang <haojian.zhuang@gmail.com>:

Device Tree conversion patches for PXA and MMP, version 4

v4:
1. remove pinctrl patches for pxa.

v3:
1. Revert d03c1990c9681047bf94caa497c41172b3f28351 GPIO: gpio-pxa: fix
devicetree functions
since it's merged into Linus' gpio tree.

v2:
1. Add Linus's Ack in pinctrl driver.
2. Add chao's & haojian's patches for Tauros2 cache.

* 'dt' of git://github.com/hzhuang1/linux:
  ARM: mmp: enable tauros2 cache in mmp2 dt
  ARM: mmp: enable tauros2 cache in pxa910
  ARM: cache: add dt support for tauros2 cache
  ARM: mmp&dove: modify tauros2_init call
  ARM: cache: add extra feature enable for tauros2
  ARM: cache: add cputype.h for tauros2
  ARM: cache: fix uninitialized ptr in tauros2_init
  gpio: pxa: add chain_eneter and chain_exit for irq handler
  ARM: pxa: support CKENC in clk_enable
  ARM: pxa: add .dtsi files
  ARM: pxa3xx: add generic DT machine code
  ARM: pxa3xx: skip default device initialization when booting via DT
  ARM: pxa: add devicetree code for irq handling
  GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  MTD: pxa3xx-nand: add devicetree bindings
  RTC: add DT bindings to pxa-rtc

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
  • Loading branch information
Arnd Bergmann committed Aug 16, 2012
2 parents 0d7614f + 51931b3 commit 71f8e5b
Show file tree
Hide file tree
Showing 22 changed files with 639 additions and 118 deletions.
17 changes: 17 additions & 0 deletions Documentation/devicetree/bindings/arm/mrvl/tauros2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
* Marvell Tauros2 Cache

Required properties:
- compatible : Should be "marvell,tauros2-cache".
- marvell,tauros2-cache-features : Specify the features supported for the
tauros2 cache.
The features including
CACHE_TAUROS2_PREFETCH_ON (1 << 0)
CACHE_TAUROS2_LINEFILL_BURST8 (1 << 1)
The definition can be found at
arch/arm/include/asm/hardware/cache-tauros2.h

Example:
L2: l2-cache {
compatible = "marvell,tauros2-cache";
marvell,tauros2-cache-features = <0x3>;
};
31 changes: 31 additions & 0 deletions Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
PXA3xx NAND DT bindings

Required properties:

- compatible: Should be "marvell,pxa3xx-nand"
- reg: The register base for the controller
- interrupts: The interrupt to map
- #address-cells: Set to <1> if the node includes partitions

Optional properties:

- marvell,nand-enable-arbiter: Set to enable the bus arbiter
- marvell,nand-keep-config: Set to keep the NAND controller config as set
by the bootloader
- num-cs: Number of chipselect lines to usw

Example:

nand0: nand@43100000 {
compatible = "marvell,pxa3xx-nand";
reg = <0x43100000 90>;
interrupts = <45>;
#address-cells = <1>;

marvell,nand-enable-arbiter;
marvell,nand-keep-config;
num-cs = <1>;

/* partitions (optional) */
};

14 changes: 14 additions & 0 deletions Documentation/devicetree/bindings/rtc/pxa-rtc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
* PXA RTC

PXA specific RTC driver.

Required properties:
- compatible : Should be "marvell,pxa-rtc"

Examples:

rtc@40900000 {
compatible = "marvell,pxa-rtc";
reg = <0x40900000 0x3c>;
interrupts = <30 31>;
};
5 changes: 5 additions & 0 deletions arch/arm/boot/dts/mmp2.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
interrupt-parent = <&intc>;
ranges;

L2: l2-cache {
compatible = "marvell,tauros2-cache";
marvell,tauros2-cache-features = <0x3>;
};

axi@d4200000 { /* AXI */
compatible = "mrvl,axi-bus", "simple-bus";
#address-cells = <1>;
Expand Down
14 changes: 14 additions & 0 deletions arch/arm/boot/dts/pxa27x.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* The pxa3xx skeleton simply augments the 2xx version */
/include/ "pxa2xx.dtsi"

/ {
model = "Marvell PXA27x familiy SoC";
compatible = "marvell,pxa27x";

pxabus {
pxairq: interrupt-controller@40d00000 {
marvell,intc-priority;
marvell,intc-nr-irqs = <34>;
};
};
};
132 changes: 132 additions & 0 deletions arch/arm/boot/dts/pxa2xx.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
/*
* pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
*
* Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
*
* Licensed under GPLv2 or later.
*/

/include/ "skeleton.dtsi"

/ {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
interrupt-parent = <&pxairq>;

aliases {
serial0 = &ffuart;
serial1 = &btuart;
serial2 = &stuart;
serial3 = &hwuart;
i2c0 = &pwri2c;
i2c1 = &pxai2c1;
};

cpus {
cpu@0 {
compatible = "arm,xscale";
};
};

pxabus {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;

pxairq: interrupt-controller@40d00000 {
#interrupt-cells = <1>;
compatible = "marvell,pxa-intc";
interrupt-controller;
interrupt-parent;
marvell,intc-nr-irqs = <32>;
reg = <0x40d00000 0xd0>;
};

gpio: gpio@40e00000 {
compatible = "mrvl,pxa-gpio";
#address-cells = <0x1>;
#size-cells = <0x1>;
reg = <0x40e00000 0x10000>;
gpio-controller;
#gpio-cells = <0x2>;
interrupts = <10>;
interrupt-names = "gpio_mux";
interrupt-controller;
#interrupt-cells = <0x2>;
ranges;

gcb0: gpio@40e00000 {
reg = <0x40e00000 0x4>;
};

gcb1: gpio@40e00004 {
reg = <0x40e00004 0x4>;
};

gcb2: gpio@40e00008 {
reg = <0x40e00008 0x4>;
};
gcb3: gpio@40e0000c {
reg = <0x40e0000c 0x4>;
};
};

ffuart: uart@40100000 {
compatible = "mrvl,pxa-uart";
reg = <0x40100000 0x30>;
interrupts = <22>;
status = "disabled";
};

btuart: uart@40200000 {
compatible = "mrvl,pxa-uart";
reg = <0x40200000 0x30>;
interrupts = <21>;
status = "disabled";
};

stuart: uart@40700000 {
compatible = "mrvl,pxa-uart";
reg = <0x40700000 0x30>;
interrupts = <20>;
status = "disabled";
};

hwuart: uart@41100000 {
compatible = "mrvl,pxa-uart";
reg = <0x41100000 0x30>;
interrupts = <7>;
status = "disabled";
};

pxai2c1: i2c@40301680 {
compatible = "mrvl,pxa-i2c";
reg = <0x40301680 0x30>;
interrupts = <18>;
#address-cells = <0x1>;
#size-cells = <0>;
status = "disabled";
};

usb0: ohci@4c000000 {
compatible = "mrvl,pxa-ohci";
reg = <0x4c000000 0x10000>;
interrupts = <3>;
status = "disabled";
};

mmc0: mmc@41100000 {
compatible = "mrvl,pxa-mmc";
reg = <0x41100000 0x1000>;
interrupts = <23>;
status = "disabled";
};

rtc@40900000 {
compatible = "marvell,pxa-rtc";
reg = <0x40900000 0x3c>;
interrupts = <30 31>;
};
};
};
32 changes: 32 additions & 0 deletions arch/arm/boot/dts/pxa3xx.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* The pxa3xx skeleton simply augments the 2xx version */
/include/ "pxa2xx.dtsi"

/ {
model = "Marvell PXA3xx familiy SoC";
compatible = "marvell,pxa3xx";

pxabus {
pwri2c: i2c@40f500c0 {
compatible = "mrvl,pwri2c";
reg = <0x40f500c0 0x30>;
interrupts = <6>;
#address-cells = <0x1>;
#size-cells = <0>;
status = "disabled";
};

nand0: nand@43100000 {
compatible = "marvell,pxa3xx-nand";
reg = <0x43100000 90>;
interrupts = <45>;
#address-cells = <1>;
#size-cells = <1>;
status = "disabled";
};

pxairq: interrupt-controller@40d00000 {
marvell,intc-priority;
marvell,intc-nr-irqs = <56>;
};
};
};
5 changes: 5 additions & 0 deletions arch/arm/boot/dts/pxa910.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@
interrupt-parent = <&intc>;
ranges;

L2: l2-cache {
compatible = "marvell,tauros2-cache";
marvell,tauros2-cache-features = <0x3>;
};

axi@d4200000 { /* AXI */
compatible = "mrvl,axi-bus", "simple-bus";
#address-cells = <1>;
Expand Down
5 changes: 4 additions & 1 deletion arch/arm/include/asm/hardware/cache-tauros2.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,7 @@
* warranty of any kind, whether express or implied.
*/

extern void __init tauros2_init(void);
#define CACHE_TAUROS2_PREFETCH_ON (1 << 0)
#define CACHE_TAUROS2_LINEFILL_BURST8 (1 << 1)

extern void __init tauros2_init(unsigned int features);
2 changes: 1 addition & 1 deletion arch/arm/mach-dove/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ void __init dove_init(void)
printk(KERN_INFO "TCLK = %dMHz\n", (get_tclk() + 499999) / 1000000);

#ifdef CONFIG_CACHE_TAUROS2
tauros2_init();
tauros2_init(0);
#endif
dove_setup_cpu_mbus();

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-mmp/mmp2.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ static int __init mmp2_init(void)
{
if (cpu_is_mmp2()) {
#ifdef CONFIG_CACHE_TAUROS2
tauros2_init();
tauros2_init(0);
#endif
mfp_init_base(MFPR_VIRT_BASE);
mfp_init_addr(mmp2_addr_map);
Expand Down
4 changes: 4 additions & 0 deletions arch/arm/mach-mmp/pxa910.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <linux/io.h>
#include <linux/platform_device.h>

#include <asm/hardware/cache-tauros2.h>
#include <asm/mach/time.h>
#include <mach/addr-map.h>
#include <mach/regs-apbc.h>
Expand Down Expand Up @@ -116,6 +117,9 @@ static struct clk_lookup pxa910_clkregs[] = {
static int __init pxa910_init(void)
{
if (cpu_is_pxa910()) {
#ifdef CONFIG_CACHE_TAUROS2
tauros2_init(0);
#endif
mfp_init_base(MFPR_VIRT_BASE);
mfp_init_addr(pxa910_mfp_addr_map);
pxa_init_dma(IRQ_PXA910_DMA_INT0, 32);
Expand Down
12 changes: 12 additions & 0 deletions arch/arm/mach-pxa/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,18 @@ config PXA_V7_MACH_AUTO
if !ARCH_PXA_V7
comment "Intel/Marvell Dev Platforms (sorted by hardware release time)"

config MACH_PXA3XX_DT
bool "Support PXA3xx platforms from device tree"
select PXA3xx
select CPU_PXA300
select POWER_SUPPLY
select HAVE_PWM
select USE_OF
help
Include support for Marvell PXA3xx based platforms using
the device tree. Needn't select any other machine while
MACH_PXA3XX_DT is enabled.

config ARCH_LUBBOCK
bool "Intel DBPXA250 Development Platform (aka Lubbock)"
select PXA25x
Expand Down
3 changes: 3 additions & 0 deletions arch/arm/mach-pxa/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o

# NOTE: keep the order of boards in accordance to their order in Kconfig

# Device Tree support
obj-$(CONFIG_MACH_PXA3XX_DT) += pxa-dt.o

# Intel/Marvell Dev Platforms
obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o
Expand Down
8 changes: 6 additions & 2 deletions arch/arm/mach-pxa/clock-pxa3xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,10 @@ void clk_pxa3xx_cken_enable(struct clk *clk)

if (clk->cken < 32)
CKENA |= mask;
else
else if (clk->cken < 64)
CKENB |= mask;
else
CKENC |= mask;
}

void clk_pxa3xx_cken_disable(struct clk *clk)
Expand All @@ -137,8 +139,10 @@ void clk_pxa3xx_cken_disable(struct clk *clk)

if (clk->cken < 32)
CKENA &= ~mask;
else
else if (clk->cken < 64)
CKENB &= ~mask;
else
CKENC &= ~mask;
}

const struct clkops clk_pxa3xx_cken_ops = {
Expand Down
Loading

0 comments on commit 71f8e5b

Please sign in to comment.