NvOdmUsbUlpiHandle NvOdmUsbUlpiOpen(NvU32 Instance) { NvOdmUsbUlpi *pDevice = NULL; NvU32 ClockInstances[MAX_CLOCKS]; NvU32 ClockFrequencies[MAX_CLOCKS]; NvU32 NumClocks; NvOdmServicesGpioHandle hGpio; NvOdmGpioPinHandle hResetPin; NvU32 Port = NVODM_PORT('v'); NvU32 Pin = 1; pDevice = NvOdmOsAlloc(sizeof(NvOdmUsbUlpi)); if (pDevice == NULL) return NULL; if(!NvOdmExternalClockConfig(SMSC3317GUID, NV_FALSE, ClockInstances, ClockFrequencies, &NumClocks)) { NvOdmOsDebugPrintf("NvOdmUsbUlpiOpen: NvOdmExternalClockConfig fail\n"); goto ExitUlpiOdm; } NvOdmOsSleepMS(10); // Pull high on RESETB ( 22nd pin of smsc3315) hGpio = NvOdmGpioOpen(); hResetPin = NvOdmGpioAcquirePinHandle(hGpio, Port, Pin); // config as out put pin NvOdmGpioConfig(hGpio,hResetPin, NvOdmGpioPinMode_Output); // Set low to write high on ULPI_RESETB pin NvOdmGpioSetState(hGpio, hResetPin, 0x01); NvOdmGpioSetState(hGpio, hResetPin, 0x0); NvOdmOsSleepMS(5); NvOdmGpioSetState(hGpio, hResetPin, 0x01); pDevice->CurrentGUID = SMSC3317GUID; return pDevice; ExitUlpiOdm: NvOdmOsFree(pDevice); return NULL; }
static int cpcap_usb_connected_probe(struct platform_device *pdev) { struct cpcap_usb_connected_data *data; struct cpcap_accy_platform_data *pdata = pdev->dev.platform_data; data = kzalloc(sizeof(*data), GFP_KERNEL); if(!data) return -ENOMEM; data->accy = pdata->accy; /* Configure CPCAP-AP20 USB Mux to AP20 */ data->port = NVODM_PORT('v'); data->pin = 6; data->h_gpio = NvOdmGpioOpen(); data->h_pin = NvOdmGpioAcquirePinHandle(data->h_gpio, data->port, data->pin); NvOdmGpioConfig(data->h_gpio, data->h_pin, NvOdmGpioPinMode_Output); NvOdmGpioSetState(data->h_gpio, data->h_pin, 0x1); platform_set_drvdata(pdev, data); /* when the phone is the host do not start the gadget driver */ if((data->accy == CPCAP_ACCY_USB) || (data->accy == CPCAP_ACCY_FACTORY)) { #ifdef CONFIG_USB_TEGRA_OTG tegra_otg_set_mode(0); #endif android_usb_set_connected(1, data->accy); } if(data->accy == CPCAP_ACCY_USB_DEVICE) { #ifdef CONFIG_USB_TEGRA_OTG tegra_otg_set_mode(1); #endif } mdm_ctrl_set_usb_ipc(true); return 0; }
*/ #include "nvodm_query_gpio.h" #include "nvodm_services.h" #include "nvrm_drf.h" #include "nvodm_query_discovery.h" #include "linux/input.h" #define NVODM_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #define NVODM_PORT(x) ((x) - 'a') #define EEPROM_ID_E1206 0x0C06 static const NvOdmGpioPinInfo s_vi[] = { {NVODM_PORT('t'), 3, NvOdmGpioPinActiveState_High}, // EN_VDDIO_SD }; static const NvOdmGpioPinInfo s_display[] = { // TO DO: Verify these settings for harmony. /* Panel 0 -- sony vga */ { NVODM_PORT('m'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('b'), 2, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('n'), 4, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 4, NvOdmGpioPinActiveState_Low }, // this pin is not needed for ap15 {NVODM_GPIO_INVALID_PORT, NVODM_GPIO_INVALID_PIN, NvOdmGpioPinActiveState_Low},
static int cpcap_usb_connected_probe(struct platform_device *pdev) { /* struct cpcap_usb_connected_data *data;*/ struct cpcap_accy_platform_data *pdata = pdev->dev.platform_data; int nr_gpio; int ret; static int count_f7 = 0; #if 0 data = kzalloc(sizeof(*data), GFP_KERNEL); if(!data) return -ENOMEM; data->accy = pdata->accy; /* Configure CPCAP-AP20 USB Mux to AP20 */ data->port = NVODM_PORT('v'); printk(KERN_INFO "pICS_%s: data->port = NVODM_PORT('v') = %lu\n",__func__, data->port); data->pin = 6; data->h_gpio = NvOdmGpioOpen(); printk(KERN_INFO "pICS_%s: data->h_gpio = NvOdmGpioOpen()\n",__func__); data->h_pin = NvOdmGpioAcquirePinHandle(data->h_gpio, data->port, data->pin); printk(KERN_INFO "pICS_%s: data->h_pin = NvOdmGpioAcquirePinHandle(data->h_gpio, data->port, data->pin)\n",__func__); NvOdmGpioConfig(data->h_gpio, data->h_pin, NvOdmGpioPinMode_Output); printk(KERN_INFO "pICS_%s: NvOdmGpioConfig(data->h_gpio, data->h_pin, NvOdmGpioPinMode_Output)\n",__func__); NvOdmGpioSetState(data->h_gpio, data->h_pin, 0x1); printk(KERN_INFO "pICS_%s: NvOdmGpioSetState(data->h_gpio, data->h_pin, 0x1)\n",__func__); #endif /* data->port = 21; data->pin = 6; data->h_gpio = 174; data->h_pin = */ try_f7: nr_gpio = 174; ret = gpio_request(nr_gpio, "nvrm_gpio"); printk(KERN_INFO "pICS_%s: gpio_request(nr_gpio=%i, 'nvrm_gpio') => %i;\n",__func__, nr_gpio, ret); if (ret) { if(TEGRA_GPIO_PF7 == nr_gpio && !count_f7) { pr_err("%s: gpio_request for 47 failed (%d). Special case to free and retry\n", __func__, ret); // F7 is allocated early by lights driver but really should be owned by disp driver gpio_free(nr_gpio); /*gpio_data[nr_gpio].val = false; gpio_data[nr_gpio].alloc = false;*/ count_f7 = 1; goto try_f7; } /*gpio_to_name(nr_gpio, gpio_name);*/ pr_err("%s: gpio_request for %d failed (%d)\n", __func__, nr_gpio, ret); } /* gpio_data[nr_gpio].alloc = true; gpio_data[nr_gpio].val = false;*/ tegra_gpio_enable(nr_gpio); gpio_direction_output(nr_gpio, 0); gpio_set_value(nr_gpio, 1); platform_set_drvdata(pdev, pdata); /* when the phone is the host do not start the gadget driver */ if((pdata->accy == CPCAP_ACCY_USB) || (pdata->accy == CPCAP_ACCY_FACTORY)) { tegra_otg_set_mode(0); #ifdef CONFIG_USB_MOT_ANDROID android_usb_set_connected(1, pdata->accy); #endif } if(pdata->accy == CPCAP_ACCY_USB_DEVICE) { tegra_otg_set_mode(1); } #ifdef CONFIG_MDM_CTRL mdm_ctrl_set_usb_ipc(true); #endif return 0; }
// { NVODM_PORT('e'), 7, NvOdmGpioPinActiveState_High }, // LCD_D7 // { NVODM_PORT('f'), 0, NvOdmGpioPinActiveState_High }, // LCD_D8 // { NVODM_PORT('f'), 1, NvOdmGpioPinActiveState_High }, // LCD_D9 // { NVODM_PORT('f'), 2, NvOdmGpioPinActiveState_High }, // LCD_D10 // { NVODM_PORT('f'), 3, NvOdmGpioPinActiveState_High }, // LCD_D11 // { NVODM_PORT('f'), 4, NvOdmGpioPinActiveState_High }, // LCD_D12 // { NVODM_PORT('f'), 5, NvOdmGpioPinActiveState_High }, // LCD_D13 // { NVODM_PORT('f'), 6, NvOdmGpioPinActiveState_High }, // LCD_D14 // { NVODM_PORT('f'), 7, NvOdmGpioPinActiveState_High }, // LCD_D15 // { NVODM_PORT('m'), 3, NvOdmGpioPinActiveState_High }, // LCD_D19 // // /* Panel 4 -- auo */ // { NVODM_PORT('v'), 7, NvOdmGpioPinActiveState_Low }, /* Panel 5 -- firefly p1138 lvds interface */ { NVODM_PORT('b'), 2, NvOdmGpioPinActiveState_High }, // Enable (LVDS_SHTDN_N) (LO:OFF, HI:ON) { NVODM_PORT('w'), 0, NvOdmGpioPinActiveState_High }, // EN_VDD_BL { NVODM_PORT('b'), 5, NvOdmGpioPinActiveState_High }, // LCD_BL_EN { NVODM_PORT('c'), 6, NvOdmGpioPinActiveState_High }, // EN_VDD_PNL { NVODM_PORT('b'), 4, NvOdmGpioPinActiveState_High }, // LCD_BL_PWM }; static const NvOdmGpioPinInfo s_hdmi[] = { /* hdmi hot-plug interrupt pin */ { NVODM_PORT('n'), 7, NvOdmGpioPinActiveState_High }, // HDMI HPD }; // static const NvOdmGpioPinInfo s_crt[] = // { // /* crt hot-plug interrupt pin */
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #include "nvodm_query_gpio.h" #include "nvodm_services.h" #include "tegra_devkit_custopt.h" #include "nvodm_keylist_reserved.h" #include "nvrm_drf.h" #define NVODM_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #define NVODM_PORT(x) ((x) - 'a') static const NvOdmGpioPinInfo s_vi[] = { {NVODM_PORT('t'), 3, NvOdmGpioPinActiveState_High}, }; static const NvOdmGpioPinInfo s_display[] = { /* Panel 0 -- sony vga */ { NVODM_PORT('m'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('b'), 2, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('n'), 4, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 4, NvOdmGpioPinActiveState_Low }, // this pin is not needed for ap15 {NVODM_GPIO_INVALID_PORT, NVODM_GPIO_INVALID_PIN, NvOdmGpioPinActiveState_Low}, /* Panel 1 -- samtek */ {NVODM_GPIO_INVALID_PORT, NVODM_GPIO_INVALID_PIN,
* more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "nvodm_query_gpio.h" #include "nvodm_services.h" #include "nvrm_drf.h" #include <linux/input.h> #define NVODM_PORT(x) ((x) - 'a') static const NvOdmGpioPinInfo s_vi[] = { {NVODM_PORT('i'), 6, NvOdmGpioPinActiveState_High}, // EN_VDDIO_SD }; static const NvOdmGpioPinInfo s_display[] = { /* Panel 0 -- sony vga */ { NVODM_PORT('m'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('b'), 2, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('n'), 4, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 3, NvOdmGpioPinActiveState_Low }, { NVODM_PORT('j'), 4, NvOdmGpioPinActiveState_Low }, // this pin is not needed for ap15 {NVODM_GPIO_INVALID_PORT, NVODM_GPIO_INVALID_PIN, NvOdmGpioPinActiveState_Low}, /* Panel 1 -- samtek */