Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 328948
b: refs/heads/master
c: 1dc737c
h: refs/heads/master
v: v3
  • Loading branch information
Rob Herring authored and Marek Szyprowski committed Oct 2, 2012
1 parent 15dad40 commit fc8ce53
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 48aa820f1e3824e46dde6251db98e5961abf605d
refs/heads/master: 1dc737c44a11c66f23ebeb09796f52f4b60d59c7
3 changes: 3 additions & 0 deletions trunk/Documentation/devicetree/bindings/ata/ahci-platform.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ Required properties:
- interrupts : <interrupt mapping for SATA IRQ>
- reg : <registers mapping>

Optional properties:
- dma-coherent : Present if dma operations are coherent

Example:
sata@ffe08000 {
compatible = "calxeda,hb-ahci";
Expand Down
3 changes: 3 additions & 0 deletions trunk/Documentation/devicetree/bindings/dma/arm-pl330.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ Required properties:
region.
- interrupts: interrupt number to the cpu.

Optional properties:
- dma-coherent : Present if dma operations are coherent

Example:

pdma0: pdma@12680000 {
Expand Down
3 changes: 3 additions & 0 deletions trunk/Documentation/devicetree/bindings/net/calxeda-xgmac.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ Required properties:
- interrupts : Should contain 3 xgmac interrupts. The 1st is main interrupt.
The 2nd is pwr mgt interrupt. The 3rd is low power state interrupt.

Optional properties:
- dma-coherent : Present if dma operations are coherent

Example:

ethernet@fff50000 {
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/boot/dts/highbank.dts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@
compatible = "calxeda,hb-ahci";
reg = <0xffe08000 0x10000>;
interrupts = <0 83 4>;
dma-coherent;
};

sdhci@ffe0e000 {
Expand Down
52 changes: 52 additions & 0 deletions trunk/arch/arm/mach-highbank/highbank.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
#include <linux/clk.h>
#include <linux/clkdev.h>
#include <linux/dma-mapping.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
Expand All @@ -23,6 +24,7 @@
#include <linux/of_platform.h>
#include <linux/of_address.h>
#include <linux/smp.h>
#include <linux/amba/bus.h>

#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
Expand Down Expand Up @@ -149,10 +151,60 @@ static void highbank_power_off(void)
cpu_do_idle();
}

static int highbank_platform_notifier(struct notifier_block *nb,
unsigned long event, void *__dev)
{
struct resource *res;
int reg = -1;
struct device *dev = __dev;

if (event != BUS_NOTIFY_ADD_DEVICE)
return NOTIFY_DONE;

if (of_device_is_compatible(dev->of_node, "calxeda,hb-ahci"))
reg = 0xc;
else if (of_device_is_compatible(dev->of_node, "calxeda,hb-sdhci"))
reg = 0x18;
else if (of_device_is_compatible(dev->of_node, "arm,pl330"))
reg = 0x20;
else if (of_device_is_compatible(dev->of_node, "calxeda,hb-xgmac")) {
res = platform_get_resource(to_platform_device(dev),
IORESOURCE_MEM, 0);
if (res) {
if (res->start == 0xfff50000)
reg = 0;
else if (res->start == 0xfff51000)
reg = 4;
}
}

if (reg < 0)
return NOTIFY_DONE;

if (of_property_read_bool(dev->of_node, "dma-coherent")) {
writel(0xff31, sregs_base + reg);
set_dma_ops(dev, &arm_coherent_dma_ops);
} else
writel(0, sregs_base + reg);

return NOTIFY_OK;
}

static struct notifier_block highbank_amba_nb = {
.notifier_call = highbank_platform_notifier,
};

static struct notifier_block highbank_platform_nb = {
.notifier_call = highbank_platform_notifier,
};

static void __init highbank_init(void)
{
pm_power_off = highbank_power_off;

bus_register_notifier(&platform_bus_type, &highbank_platform_nb);
bus_register_notifier(&amba_bustype, &highbank_amba_nb);

of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}

Expand Down

0 comments on commit fc8ce53

Please sign in to comment.