Skip to content

Commit

Permalink
microblaze: Fix the heartbeat gpio to be more robust
Browse files Browse the repository at this point in the history
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: John Linn <john.linn@xilinx.com>
Signed-off-by: Michal Simek <monstr@monstr.eu>
  • Loading branch information
John Linn authored and Michal Simek committed Dec 14, 2009
1 parent 95dfbbe commit 6d85853
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions arch/microblaze/kernel/heartbeat.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ void heartbeat(void)
void setup_heartbeat(void)
{
struct device_node *gpio = NULL;
int *prop;
int j;
char *gpio_list[] = {
"xlnx,xps-gpio-1.00.a",
Expand All @@ -58,10 +59,14 @@ void setup_heartbeat(void)
break;
}

base_addr = *(int *) of_get_property(gpio, "reg", NULL);
base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);
if (gpio) {
base_addr = *(int *) of_get_property(gpio, "reg", NULL);
base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);

if (*(int *) of_get_property(gpio, "xlnx,is-bidir", NULL))
out_be32(base_addr + 4, 0); /* GPIO is configured as output */
/* GPIO is configured as output */
prop = (int *) of_get_property(gpio, "xlnx,is-bidir", NULL);
if (prop)
out_be32(base_addr + 4, 0);
}
}

0 comments on commit 6d85853

Please sign in to comment.