*****************************************************************************************/
#define FB_ID 0
#define FB_DISPLAY_ON_PIN RK29_PIN6_PD0
-#define FB_LCD_STANDBY_PIN RK29_PIN6_PD1
+#define FB_LCD_STANDBY_PIN INVALID_GPIO
#define FB_LCD_CABC_EN_PIN RK29_PIN6_PD2
#define FB_MCU_FMK_PIN INVALID_GPIO
#define FB_LCD_STANDBY_VALUE GPIO_HIGH
//#endif
+/*****************************************************************************************
+* touch screen devices
+* author: cf@rock-chips.com
+*****************************************************************************************/
+#define TOUCH_SCREEN_STANDBY_PIN RK29_PIN6_PD1
+#define TOUCH_SCREEN_STANDBY_VALUE GPIO_HIGH
+
static int rk29_lcd_io_init(void)
{
int ret = 0;
}
}
- if(fb_setting->disp_on_en && (FB_LCD_STANDBY_PIN != INVALID_GPIO))
+ if(fb_setting->disp_on_en)
{
- ret = gpio_request(FB_LCD_STANDBY_PIN, NULL);
- if(ret != 0)
+ if(FB_LCD_STANDBY_PIN != INVALID_GPIO)
{
- gpio_free(FB_LCD_STANDBY_PIN);
- printk(">>>>>> FB_LCD_STANDBY_PIN gpio_request err \n ");
+ ret = gpio_request(FB_LCD_STANDBY_PIN, NULL);
+ if(ret != 0)
+ {
+ gpio_free(FB_LCD_STANDBY_PIN);
+ printk(">>>>>> FB_LCD_STANDBY_PIN gpio_request err \n ");
+ }
}
+ else
+ {
+ ret = gpio_request(TOUCH_SCREEN_STANDBY_PIN, NULL);
+ if(ret != 0)
+ {
+ gpio_free(TOUCH_SCREEN_STANDBY_PIN);
+ printk(">>>>>> TOUCH_SCREEN_STANDBY_PIN gpio_request err \n ");
+ }
+ gpio_direction_output(TOUCH_SCREEN_STANDBY_PIN, 0);
+ gpio_set_value(TOUCH_SCREEN_STANDBY_PIN, TOUCH_SCREEN_STANDBY_VALUE);
+ }
}
if(FB_LCD_CABC_EN_PIN != INVALID_GPIO)
static struct eeti_egalax_platform_data eeti_egalax_info = {
.model= 1003,
.init_platform_hw= EETI_EGALAX_init_platform_hw,
-
+ .standby_pin = TOUCH_SCREEN_STANDBY_PIN,
+ .standby_value = TOUCH_SCREEN_STANDBY_VALUE,
};
#endif
/*MMA8452 gsensor*/
return IRQ_HANDLED;
}
+
+void egalax_i2c_set_standby(struct i2c_client *client, int enable)
+{
+ struct eeti_egalax_platform_data *pdata = pdata = client->dev.platform_data;
+ unsigned lcd_standby = pdata->standby_pin;
+ int lcd_standby_pol = pdata->standby_value;
+ printk("%s : %s, enable = %d", __FILE__, __FUNCTION__,enable);
+ // set display_on
+ if(lcd_standby != INVALID_GPIO)
+ {
+ gpio_direction_output(lcd_standby, 0);
+ gpio_set_value(lcd_standby, enable ? lcd_standby_pol : !lcd_standby_pol);
+ }
+}
+
#ifdef CONFIG_PM
static int egalax_i2c_suspend(struct i2c_client *client, pm_message_t mesg)
{
{
printk(KERN_DEBUG "[egalax_i2c]: device_may_wakeup false\n");
}
-
+ egalax_i2c_set_standby(client, 1);
return 0;
}
static int egalax_i2c_resume(struct i2c_client *client)
{
struct _egalax_i2c *egalax_i2c = i2c_get_clientdata(client);
-
+ egalax_i2c_set_standby(client, 0);
if(device_may_wakeup(&client->dev))
{
disable_irq_wake(p_egalax_i2c_dev->irq);