ARM: OMAP: switch to gpio_direction_output
More conversion to the standard GPIO interfaces: stop using omap_set_gpio_direction() entirely, and switch over to the gpio_direction_output() call. Note that because gpio_direction_output() includes the initial value, this change isn't quite transparent. - For the call sites which defined an initial value either before or after setting the direction, that value was used. When that value was previously assigned afterwards, this could eliminate a brief output glitch ... and possibly change behavior. In a few cases (LCDs) several values were assigned together ... those were re-arranged to match the explicit sequence provided. - Some call sites didn't define such a value; so I chose an initial "off/reset" value that seemed to default to "off". In short, files touched by this patch might notice some small changes in startup behavior (with trivial fixes). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
Родитель
40e3925ba1
Коммит
e918edf7c2
|
@ -439,7 +439,7 @@ static void __init h2_init(void)
|
|||
#if defined(CONFIG_OMAP_IR) || defined(CONFIG_OMAP_IR_MODULE)
|
||||
omap_writel(omap_readl(FUNC_MUX_CTRL_A) | 7, FUNC_MUX_CTRL_A);
|
||||
if (!(omap_request_gpio(H2_IRDA_FIRSEL_GPIO_PIN))) {
|
||||
omap_set_gpio_direction(H2_IRDA_FIRSEL_GPIO_PIN, 0);
|
||||
gpio_direction_output(H2_IRDA_FIRSEL_GPIO_PIN, 0);
|
||||
h2_irda_data.transceiver_mode = h2_transceiver_mode;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -323,8 +323,7 @@ palmz71_gpio_setup(int early)
|
|||
{
|
||||
if (early) {
|
||||
/* Only set GPIO1 so we have a working serial */
|
||||
gpio_set_value(1, 1);
|
||||
omap_set_gpio_direction(1, 0);
|
||||
gpio_direction_output(1, 1);
|
||||
} else {
|
||||
/* Set MMC/SD host WP pin as input */
|
||||
if (omap_request_gpio(PALMZ71_MMC_WP_GPIO)) {
|
||||
|
|
|
@ -436,14 +436,9 @@ static void __init omap_sx1_init(void)
|
|||
omap_request_gpio(1); /* A_IRDA_OFF */
|
||||
omap_request_gpio(11); /* A_SWITCH */
|
||||
omap_request_gpio(15); /* A_USB_ON */
|
||||
omap_set_gpio_direction(1, 0);/* gpio1 -> output */
|
||||
omap_set_gpio_direction(11, 0);/* gpio11 -> output */
|
||||
omap_set_gpio_direction(15, 0);/* gpio15 -> output */
|
||||
/* set GPIO data */
|
||||
gpio_set_value(1, 1);/*A_IRDA_OFF = 1 */
|
||||
gpio_set_value(11, 0);/*A_SWITCH = 0 */
|
||||
gpio_set_value(15, 0);/*A_USB_ON = 0 */
|
||||
|
||||
gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */
|
||||
gpio_direction_output(11, 0); /*A_SWITCH = 0 */
|
||||
gpio_direction_output(15, 0); /*A_USB_ON = 0 */
|
||||
}
|
||||
/*----------------------------------------*/
|
||||
static void __init omap_sx1_init_irq(void)
|
||||
|
|
|
@ -171,8 +171,7 @@ static void __init voiceblue_init(void)
|
|||
omap_request_gpio(0);
|
||||
/* smc91x reset */
|
||||
omap_request_gpio(7);
|
||||
omap_set_gpio_direction(7, 0);
|
||||
gpio_set_value(7, 1);
|
||||
gpio_direction_output(7, 1);
|
||||
udelay(2); /* wait at least 100ns */
|
||||
gpio_set_value(7, 0);
|
||||
mdelay(50); /* 50ms until PHY ready */
|
||||
|
@ -180,8 +179,7 @@ static void __init voiceblue_init(void)
|
|||
omap_request_gpio(8);
|
||||
/* 16C554 reset*/
|
||||
omap_request_gpio(6);
|
||||
omap_set_gpio_direction(6, 0);
|
||||
gpio_set_value(6, 0);
|
||||
gpio_direction_output(6, 0);
|
||||
/* 16C554 interrupt pins */
|
||||
omap_request_gpio(12);
|
||||
omap_request_gpio(13);
|
||||
|
@ -244,8 +242,7 @@ static int wdt_gpio_state;
|
|||
|
||||
void voiceblue_wdt_enable(void)
|
||||
{
|
||||
omap_set_gpio_direction(0, 0);
|
||||
gpio_set_value(0, 0);
|
||||
gpio_direction_output(0, 0);
|
||||
gpio_set_value(0, 1);
|
||||
gpio_set_value(0, 0);
|
||||
wdt_gpio_state = 0;
|
||||
|
|
|
@ -48,13 +48,13 @@ omap_leds_init(void)
|
|||
*/
|
||||
omap_cfg_reg(P18_1610_GPIO3);
|
||||
if (omap_request_gpio(3) == 0)
|
||||
omap_set_gpio_direction(3, 0);
|
||||
gpio_direction_output(3, 1);
|
||||
else
|
||||
printk(KERN_WARNING "LED: can't get GPIO3/red?\n");
|
||||
|
||||
omap_cfg_reg(MPUIO4);
|
||||
if (omap_request_gpio(OMAP_MPUIO(4)) == 0)
|
||||
omap_set_gpio_direction(OMAP_MPUIO(4), 0);
|
||||
gpio_direction_output(OMAP_MPUIO(4), 1);
|
||||
else
|
||||
printk(KERN_WARNING "LED: can't get MPUIO4/green?\n");
|
||||
}
|
||||
|
|
|
@ -360,8 +360,7 @@ static void __init apollon_usb_init(void)
|
|||
/* DEVICE_SUSPEND */
|
||||
omap_cfg_reg(P21_242X_GPIO12);
|
||||
omap_request_gpio(12);
|
||||
omap_set_gpio_direction(12, 0); /* OUT */
|
||||
gpio_set_value(12, 0);
|
||||
gpio_direction_output(12, 0);
|
||||
}
|
||||
|
||||
static void __init omap_apollon_init(void)
|
||||
|
|
|
@ -333,19 +333,6 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
|
|||
__raw_writel(l, reg);
|
||||
}
|
||||
|
||||
void omap_set_gpio_direction(int gpio, int is_input)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_direction(bank, get_gpio_index(gpio), is_input);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
||||
{
|
||||
void __iomem *reg = bank->base;
|
||||
|
@ -1741,7 +1728,6 @@ static int __init omap_gpio_sysinit(void)
|
|||
|
||||
EXPORT_SYMBOL(omap_request_gpio);
|
||||
EXPORT_SYMBOL(omap_free_gpio);
|
||||
EXPORT_SYMBOL(omap_set_gpio_direction);
|
||||
|
||||
arch_initcall(omap_gpio_sysinit);
|
||||
|
||||
|
|
|
@ -73,7 +73,6 @@
|
|||
extern int omap_gpio_init(void); /* Call from board init only */
|
||||
extern int omap_request_gpio(int gpio);
|
||||
extern void omap_free_gpio(int gpio);
|
||||
extern void omap_set_gpio_direction(int gpio, int is_input);
|
||||
extern void omap2_gpio_prepare_for_retention(void);
|
||||
extern void omap2_gpio_resume_after_retention(void);
|
||||
extern void omap_set_gpio_debounce(int gpio, int enable);
|
||||
|
|
Загрузка…
Ссылка в новой задаче