Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 355736
b: refs/heads/master
c: 2ad6e39
h: refs/heads/master
v: v3
  • Loading branch information
Linus Walleij committed Jan 28, 2013
1 parent 35c542f commit 745ceee
Show file tree
Hide file tree
Showing 6 changed files with 60 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: 6010d40320f8827441414886c46a7dbc6460439a
refs/heads/master: 2ad6e39867cf026e668a4c566725c2c65dbde406
5 changes: 5 additions & 0 deletions trunk/Documentation/devicetree/bindings/arm/ste-nomadik.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,9 @@ Required node: usb-s8815
Example:

usb-s8815 {
ethernet-gpio {
gpios = <&gpio3 19 0x1>;
interrupts = <19 0x1>;
interrupt-parent = <&gpio3>;
};
};
6 changes: 6 additions & 0 deletions trunk/arch/arm/boot/dts/ste-nomadik-s8815.dts
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,11 @@

/* Custom board node with GPIO pins to active etc */
usb-s8815 {
/* The S8815 is using this very GPIO pin for the SMSC91x IRQs */
ethernet-gpio {
gpios = <&gpio3 19 0x1>;
interrupts = <19 0x1>;
interrupt-parent = <&gpio3>;
};
};
};
12 changes: 12 additions & 0 deletions trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,18 @@
};
};

external-bus@34000000 {
compatible = "simple-bus";
reg = <0x34000000 0x1000000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x34000000 0x1000000>;
ethernet@300 {
compatible = "smsc,lan91c111";
reg = <0x300 0x0fd00>;
};
};

amba {
compatible = "arm,amba-bus";
#address-cells = <1>;
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/mach-nomadik/board-nhk8815.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ static int __init nhk8815_eth_init(void)
int gpio_nr = 115; /* hardwired in the board */
int err;

if (!machine_is_nomadik())
return 0;
err = gpio_request(gpio_nr, "eth_irq");
if (!err) err = gpio_direction_input(gpio_nr);
if (err)
Expand Down
34 changes: 34 additions & 0 deletions trunk/arch/arm/mach-nomadik/cpu-8815.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@
#include <linux/pinctrl/machine.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>
#include <linux/of_irq.h>
#include <linux/of_gpio.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/mtd/fsmc.h>
#include <linux/gpio.h>

#include <mach/hardware.h>
#include <mach/irqs.h>
Expand Down Expand Up @@ -263,6 +265,38 @@ static struct fsmc_nand_platform_data cpu8815_nand_data = {
.nand_timings = &cpu8815_nand_timings,
};

/*
* The SMSC911x IRQ is connected to a GPIO pin, but the driver expects
* to simply request an IRQ passed as a resource. So the GPIO pin needs
* to be requested by this hog and set as input.
*/
static int __init cpu8815_eth_init(void)
{
struct device_node *eth;
int gpio, irq, err;

eth = of_find_node_by_path("/usb-s8815/ethernet-gpio");
if (!eth) {
pr_info("could not find any ethernet GPIO\n");
return 0;
}
gpio = of_get_gpio(eth, 0);
err = gpio_request(gpio, "eth_irq");
if (err) {
pr_info("failed to request ethernet GPIO\n");
return -ENODEV;
}
err = gpio_direction_input(gpio);
if (err) {
pr_info("failed to set ethernet GPIO as input\n");
return -ENODEV;
}
irq = gpio_to_irq(gpio);
pr_info("enabled USB-S8815 ethernet GPIO %d, IRQ %d\n", gpio, irq);
return 0;
}
device_initcall(cpu8815_eth_init);

/* 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("st,nomadik-gpio", NOMADIK_GPIO0_BASE,
Expand Down

0 comments on commit 745ceee

Please sign in to comment.