Beispiel #1
0
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},
Beispiel #4
0
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,
Beispiel #7
0
 * 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 */