Skip to content

Commit

Permalink
microblaze: Support both levels for reset
Browse files Browse the repository at this point in the history
Till this patch reset always perform writen to 1.
Now we can use negative logic and perform reset write to 0.

It is opposite level than is currently read from that pin

Signed-off-by: Michal Simek <monstr@monstr.eu>
  • Loading branch information
Michal Simek committed Dec 14, 2009
1 parent 7537583 commit 67bf876
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions arch/microblaze/kernel/reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <linux/of_gpio.h>

static int handle; /* reset pin handle */
static unsigned int reset_val;

static int of_reset_gpio_handle(void)
{
Expand Down Expand Up @@ -75,9 +76,9 @@ void of_platform_reset_gpio_probe(void)
}

/* get current setup value */
ret = gpio_get_value(handle);
reset_val = gpio_get_value(handle);
/* FIXME maybe worth to perform any action */
pr_debug("Reset: Gpio output state: 0x%x\n", ret);
pr_debug("Reset: Gpio output state: 0x%x\n", reset_val);

/* Setup GPIO as output */
ret = gpio_direction_output(handle, 0);
Expand All @@ -87,7 +88,8 @@ void of_platform_reset_gpio_probe(void)
/* Setup output direction */
gpio_set_value(handle, 0);

printk(KERN_INFO "RESET: Registered gpio device: %d\n", handle);
printk(KERN_INFO "RESET: Registered gpio device: %d, current val: %d\n",
handle, reset_val);
return;
err:
gpio_free(handle);
Expand All @@ -97,7 +99,7 @@ void of_platform_reset_gpio_probe(void)

static void gpio_system_reset(void)
{
gpio_set_value(handle, 1);
gpio_set_value(handle, 1 - reset_val);
}
#else
#define gpio_system_reset() do {} while (0)
Expand Down

0 comments on commit 67bf876

Please sign in to comment.