Si es el caso de que efectivamente necesita un reset o un cambio de high a low, o viceversa antes de en un momento determinado, podría arreglarse fácilmente.
Por ejemplo para poner en HIGH/LOW antes de que se inicialice el USB este código podría valer, por ejemplo poniéndolo en el archivo board_bcm963xx.c. Antes de que se registren los USBs.
if ((board.has_ohci0 || board.has_ehci0)) {
printk(KERN_INFO PFX "resetting gpio27 for usbHUB...\n");
gpio_request(27, "USB_rst");
gpio_direction_output(27, 0);
gpio_set_value(27, 1);
usbh_ports = board.num_usbh_ports;
if (!usbh_ports || WARN_ON(usbh_ports > 1 && board.has_usbd))
usbh_ports = 1;
}
Puede que si lo que necesita es un reset necesitemos una línea más:
gpio_set_value(27, 0);
Aunque tal vez board_register_devices podría no ser la función correcta para hacer el cambio de high a low o viceversa sino en la función prom_init, de forma parecida a lo que hay para el bcm6318 y el gpio-pinmux para usb. Todo es cuestión de probar.