Commit 6d858535 authored by John Linn's avatar John Linn Committed by Michal Simek

microblaze: Fix the heartbeat gpio to be more robust

The device tree handling for the gpio in the heart beat was not handling
the system when there was no gpio and it wasn't working with a newer version
of the gpio core which does not have the is-bidir property.
Signed-off-by: default avatarJohn Linn <john.linn@xilinx.com>
Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
parent 95dfbbe4
...@@ -45,6 +45,7 @@ void heartbeat(void) ...@@ -45,6 +45,7 @@ void heartbeat(void)
void setup_heartbeat(void) void setup_heartbeat(void)
{ {
struct device_node *gpio = NULL; struct device_node *gpio = NULL;
int *prop;
int j; int j;
char *gpio_list[] = { char *gpio_list[] = {
"xlnx,xps-gpio-1.00.a", "xlnx,xps-gpio-1.00.a",
...@@ -58,10 +59,14 @@ void setup_heartbeat(void) ...@@ -58,10 +59,14 @@ void setup_heartbeat(void)
break; break;
} }
if (gpio) {
base_addr = *(int *) of_get_property(gpio, "reg", NULL); base_addr = *(int *) of_get_property(gpio, "reg", NULL);
base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE); base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr); printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);
if (*(int *) of_get_property(gpio, "xlnx,is-bidir", NULL)) /* GPIO is configured as output */
out_be32(base_addr + 4, 0); /* GPIO is configured as output */ prop = (int *) of_get_property(gpio, "xlnx,is-bidir", NULL);
if (prop)
out_be32(base_addr + 4, 0);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment