提交 8fb105f5 编写于 作者: I Ian Molton

PXA UDC - allow use of inverted GPIO for pullup

Signed-off-by: NIan Molton <spyro@f2s.com>
上级 b3d354b8
...@@ -152,9 +152,10 @@ static int is_vbus_present(void) ...@@ -152,9 +152,10 @@ static int is_vbus_present(void)
static void pullup_off(void) static void pullup_off(void)
{ {
struct pxa2xx_udc_mach_info *mach = the_controller->mach; struct pxa2xx_udc_mach_info *mach = the_controller->mach;
int off_level = mach->gpio_pullup_inverted;
if (mach->gpio_pullup) if (mach->gpio_pullup)
gpio_set_value(mach->gpio_pullup, 0); gpio_set_value(mach->gpio_pullup, off_level);
else if (mach->udc_command) else if (mach->udc_command)
mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
} }
...@@ -162,9 +163,10 @@ static void pullup_off(void) ...@@ -162,9 +163,10 @@ static void pullup_off(void)
static void pullup_on(void) static void pullup_on(void)
{ {
struct pxa2xx_udc_mach_info *mach = the_controller->mach; struct pxa2xx_udc_mach_info *mach = the_controller->mach;
int on_level = !mach->gpio_pullup_inverted;
if (mach->gpio_pullup) if (mach->gpio_pullup)
gpio_set_value(mach->gpio_pullup, 1); gpio_set_value(mach->gpio_pullup, on_level);
else if (mach->udc_command) else if (mach->udc_command)
mach->udc_command(PXA2XX_UDC_CMD_CONNECT); mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
} }
......
...@@ -23,6 +23,7 @@ struct pxa2xx_udc_mach_info { ...@@ -23,6 +23,7 @@ struct pxa2xx_udc_mach_info {
*/ */
bool gpio_vbus_inverted; bool gpio_vbus_inverted;
u16 gpio_vbus; /* high == vbus present */ u16 gpio_vbus; /* high == vbus present */
bool gpio_pullup_inverted;
u16 gpio_pullup; /* high == pullup activated */ u16 gpio_pullup; /* high == pullup activated */
}; };
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册