Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 355731
b: refs/heads/master
c: f8635ab
h: refs/heads/master
i:
  355729: 7c0578e
  355727: cfde457
v: v3
  • Loading branch information
Linus Walleij committed Jan 28, 2013
1 parent be6619a commit 4b8ec1d
Show file tree
Hide file tree
Showing 9 changed files with 208 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a352d85adbe8ed0c5c8c69e3ea0ee1833b3ee27e
refs/heads/master: f8635abd38776a413d1e84c79353693b8ecf45c9
19 changes: 19 additions & 0 deletions trunk/Documentation/devicetree/bindings/arm/ste-nomadik.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
ST-Ericsson Nomadik Device Tree Bindings

For various board the "board" node may contain specific properties
that pertain to this particular board, such as board-specific GPIOs.

Boards with the Nomadik SoC include:

S8815 "MiniKit" manufactured by Calao Systems:

Required root node property:

compatible="calaosystems,usb-s8815";

Required node: usb-s8815

Example:

usb-s8815 {
};
1 change: 1 addition & 0 deletions trunk/arch/arm/boot/dts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
imx28-m28evk.dtb \
imx28-sps1.dtb \
imx28-tx28.dtb
dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
omap3-beagle.dtb \
omap3-beagle-xm.dtb \
Expand Down
20 changes: 20 additions & 0 deletions trunk/arch/arm/boot/dts/ste-nomadik-s8815.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Device Tree for the ST-Ericsson Nomadik S8815 board
* Produced by Calao Systems
*/

/dts-v1/;
/include/ "ste-nomadik-stn8815.dtsi"

/ {
model = "Calao Systems USB-S8815";
compatible = "calaosystems,usb-s8815";

chosen {
bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk";
};

/* Custom board node with GPIO pins to active etc */
usb-s8815 {
};
};
80 changes: 80 additions & 0 deletions trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
* Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
*/
/include/ "skeleton.dtsi"

/ {
#address-cells = <1>;
#size-cells = <1>;

memory {
reg = <0x00000000 0x04000000>,
<0x08000000 0x04000000>;
};

L2: l2-cache {
compatible = "arm,l210-cache";
reg = <0x10210000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <30>;
cache-unified;
cache-level = <2>;
};

mtu0 {
/* Nomadik system timer */
reg = <0x101e2000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <4>;
};

mtu1 {
/* Secondary timer */
reg = <0x101e3000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <5>;
};

amba {
compatible = "arm,amba-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;

vica: intc@0x10140000 {
compatible = "arm,versatile-vic";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0x10140000 0x20>;
};

vicb: intc@0x10140020 {
compatible = "arm,versatile-vic";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0x10140020 0x20>;
};

uart0: uart@101fd000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101fd000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <12>;
};

uart1: uart@101fb000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101fb000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <17>;
};

uart2: uart@101f2000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101f2000 0x1000>;
interrupt-parent = <&vica>;
interrupts = <28>;
status = "disabled";
};
};
};
4 changes: 4 additions & 0 deletions trunk/arch/arm/mach-nomadik/board-nhk8815.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ static int __init nhk8815_mmcsd_init(void)
{
int ret;

/* For e.g. devicetree boot */
if (!machine_is_nomadik())
return 0;

ret = gpio_request(112, "card detect bias");
if (ret)
return ret;
Expand Down
78 changes: 77 additions & 1 deletion trunk/arch/arm/mach-nomadik/cpu-8815.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,19 @@
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/dma-mapping.h>
#include <linux/irqchip/arm-vic.h>
#include <linux/irqchip.h>
#include <linux/platform_data/clk-nomadik.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>
#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>

#include <mach/hardware.h>
#include <mach/irqs.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>

#include <asm/cacheflush.h>
#include <asm/hardware/cache-l2x0.h>
Expand Down Expand Up @@ -160,3 +166,73 @@ void cpu8815_restart(char mode, const char *cmd)
/* Write anything to Reset status register */
writel(1, src_rstsr);
}

#ifdef CONFIG_OF

/* Initial value for SRC control register: all timers use MXTAL/8 source */
#define SRC_CR_INIT_MASK 0x00007fff
#define SRC_CR_INIT_VAL 0x2aaa8000

static void __init cpu8815_timer_init_of(void)
{
struct device_node *mtu;
void __iomem *base;
int irq;
u32 src_cr;

/* We need this to be up now */
nomadik_clk_init();

mtu = of_find_node_by_path("/mtu0");
if (!mtu)
return;
base = of_iomap(mtu, 0);
if (WARN_ON(!base))
return;
irq = irq_of_parse_and_map(mtu, 0);

pr_info("Remapped MTU @ %p, irq: %d\n", base, irq);

/* Configure timer sources in "system reset controller" ctrl reg */
src_cr = readl(base);
src_cr &= SRC_CR_INIT_MASK;
src_cr |= SRC_CR_INIT_VAL;
writel(src_cr, base);

nmdk_timer_init(base, irq);
}

/* These are mostly to get the right device names for the clock lookups */
static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE,
"uart0", NULL),
OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART1_BASE,
"uart1", NULL),
{ /* sentinel */ },
};

static void __init cpu8815_init_of(void)
{
#ifdef CONFIG_CACHE_L2X0
/* At full speed latency must be >=2, so 0x249 in low bits */
l2x0_of_init(0x00730249, 0xfe000fff);
#endif
of_platform_populate(NULL, of_default_bus_match_table,
cpu8815_auxdata_lookup, NULL);
}

static const char * cpu8815_board_compat[] = {
"calaosystems,usb-s8815",
NULL,
};

DT_MACHINE_START(NOMADIK_DT, "Nomadik STn8815")
.map_io = cpu8815_map_io,
.init_irq = irqchip_init,
.init_time = cpu8815_timer_init_of,
.init_machine = cpu8815_init_of,
.restart = cpu8815_restart,
.dt_compat = cpu8815_board_compat,
MACHINE_END

#endif
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-nomadik/cpu-8815.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ extern void cpu8815_map_io(void);
extern void cpu8815_platform_init(void);
extern void cpu8815_init_irq(void);
extern void cpu8815_restart(char, const char *);
extern struct sys_timer cpu8815_timer;
5 changes: 5 additions & 0 deletions trunk/arch/arm/mach-nomadik/i2c-8815nhk.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <linux/i2c-algo-bit.h>
#include <linux/i2c-gpio.h>
#include <linux/platform_device.h>
#include <asm/mach-types.h>

/*
* There are two busses in the 8815NHK.
Expand Down Expand Up @@ -58,6 +59,10 @@ static struct platform_device nhk8815_i2c_dev2 = {

static int __init nhk8815_i2c_init(void)
{
/* For e.g. devicetree boot */
if (!machine_is_nomadik())
return 0;

platform_device_register(&nhk8815_i2c_dev0);
platform_device_register(&nhk8815_i2c_dev1);
platform_device_register(&nhk8815_i2c_dev2);
Expand Down

0 comments on commit 4b8ec1d

Please sign in to comment.