mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
microblaze: Support both levels for reset
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>
This commit is contained in:
parent
7537583040
commit
67bf876654
@ -17,6 +17,7 @@
|
|||||||
#include <linux/of_gpio.h>
|
#include <linux/of_gpio.h>
|
||||||
|
|
||||||
static int handle; /* reset pin handle */
|
static int handle; /* reset pin handle */
|
||||||
|
static unsigned int reset_val;
|
||||||
|
|
||||||
static int of_reset_gpio_handle(void)
|
static int of_reset_gpio_handle(void)
|
||||||
{
|
{
|
||||||
@ -75,9 +76,9 @@ void of_platform_reset_gpio_probe(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* get current setup value */
|
/* get current setup value */
|
||||||
ret = gpio_get_value(handle);
|
reset_val = gpio_get_value(handle);
|
||||||
/* FIXME maybe worth to perform any action */
|
/* 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 */
|
/* Setup GPIO as output */
|
||||||
ret = gpio_direction_output(handle, 0);
|
ret = gpio_direction_output(handle, 0);
|
||||||
@ -87,7 +88,8 @@ void of_platform_reset_gpio_probe(void)
|
|||||||
/* Setup output direction */
|
/* Setup output direction */
|
||||||
gpio_set_value(handle, 0);
|
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;
|
return;
|
||||||
err:
|
err:
|
||||||
gpio_free(handle);
|
gpio_free(handle);
|
||||||
@ -97,7 +99,7 @@ err:
|
|||||||
|
|
||||||
static void gpio_system_reset(void)
|
static void gpio_system_reset(void)
|
||||||
{
|
{
|
||||||
gpio_set_value(handle, 1);
|
gpio_set_value(handle, 1 - reset_val);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define gpio_system_reset() do {} while (0)
|
#define gpio_system_reset() do {} while (0)
|
||||||
|
Loading…
Reference in New Issue
Block a user