From afa0d709397f3f9801b0b96ace6744b5dcb675a6 Mon Sep 17 00:00:00 2001 From: luowei Date: Sun, 10 Apr 2011 19:55:26 +0800 Subject: [PATCH] add waking up system support for a22 --- arch/arm/configs/rk29_a22_defconfig | 145 +++++++++++++----- arch/arm/mach-rk29/board-rk29-a22.c | 8 +- drivers/mfd/wm831x-spi-a22.c | 106 +++---------- .../video/display/screen/lcd_ili9803_cpt4_3.c | 36 ++--- 4 files changed, 152 insertions(+), 143 deletions(-) diff --git a/arch/arm/configs/rk29_a22_defconfig b/arch/arm/configs/rk29_a22_defconfig index a3709ab43838..574a6629b9f0 100755 --- a/arch/arm/configs/rk29_a22_defconfig +++ b/arch/arm/configs/rk29_a22_defconfig @@ -1,10 +1,11 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32.27 -# Fri Mar 4 11:17:59 2011 +# Sun Apr 10 18:01:55 2011 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_HAVE_SCHED_CLOCK=y CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CLOCKEVENTS=y @@ -197,13 +198,38 @@ CONFIG_MMU=y CONFIG_ARCH_RK29=y CONFIG_WIFI_CONTROL_FUNC=y # CONFIG_MACH_RK29SDK is not set +# CONFIG_MACH_RK29SDK_DDR3 is not set # CONFIG_MACH_RK29WINACCORD is not set # CONFIG_MACH_RK29FIH is not set # CONFIG_MACH_RK29_AIGO is not set # CONFIG_MACH_RK29_MALATA is not set # CONFIG_MACH_RK29_PHONESDK is not set CONFIG_MACH_RK29_A22=y +# CONFIG_DDR_TYPE_DDRII is not set +# CONFIG_DDR_TYPE_DDR3_800D is not set +# CONFIG_DDR_TYPE_DDR3_800E is not set +# CONFIG_DDR_TYPE_DDR3_1066E is not set +# CONFIG_DDR_TYPE_DDR3_1066F is not set +# CONFIG_DDR_TYPE_DDR3_1066G is not set +# CONFIG_DDR_TYPE_DDR3_1333F is not set +# CONFIG_DDR_TYPE_DDR3_1333G is not set +# CONFIG_DDR_TYPE_DDR3_1333H is not set +# CONFIG_DDR_TYPE_DDR3_1333J is not set +# CONFIG_DDR_TYPE_DDR3_1600G is not set +# CONFIG_DDR_TYPE_DDR3_1600H is not set +# CONFIG_DDR_TYPE_DDR3_1600J is not set +# CONFIG_DDR_TYPE_DDR3_1600K is not set +# CONFIG_DDR_TYPE_DDR3_1866J is not set +# CONFIG_DDR_TYPE_DDR3_1866K is not set +# CONFIG_DDR_TYPE_DDR3_1866L is not set +# CONFIG_DDR_TYPE_DDR3_1866M is not set +# CONFIG_DDR_TYPE_DDR3_2133K is not set +# CONFIG_DDR_TYPE_DDR3_2133L is not set +# CONFIG_DDR_TYPE_DDR3_2133M is not set +# CONFIG_DDR_TYPE_DDR3_2133N is not set +CONFIG_DDR_TYPE_DDR3_DEFAULT=y CONFIG_RK29_MEM_SIZE_M=512 +CONFIG_DDR_SDRAM_FREQ=200 # # RK29 VPU (Video Processing Unit) support @@ -456,6 +482,8 @@ CONFIG_BT_HCIUART_H4=y # CONFIG_BT_HCIVHCI is not set # CONFIG_BT_MRVL is not set CONFIG_BT_HCIBCM4325=y +CONFIG_IDBLOCK=y +# CONFIG_WIFI_MAC is not set # CONFIG_AF_RXRPC is not set CONFIG_WIRELESS=y # CONFIG_CFG80211 is not set @@ -548,6 +576,9 @@ CONFIG_MTD_CFI_I2=y # # Self-contained MTD device drivers # +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set # CONFIG_MTD_MTDRAM is not set @@ -599,12 +630,14 @@ CONFIG_ANDROID_PMEM=y CONFIG_APANIC=y CONFIG_APANIC_PLABEL="kpanic" # CONFIG_STE is not set +# CONFIG_MTK23D is not set # CONFIG_C2PORT is not set # # EEPROM support # # CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set # CONFIG_EEPROM_LEGACY is not set # CONFIG_EEPROM_MAX6875 is not set # CONFIG_EEPROM_93CX6 is not set @@ -705,6 +738,7 @@ CONFIG_MII=y # CONFIG_RK29_VMAC is not set # CONFIG_SMC91X is not set # CONFIG_DM9000 is not set +# CONFIG_ENC28J60 is not set # CONFIG_ETHOC is not set # CONFIG_SMC911X is not set # CONFIG_SMSC911X is not set @@ -718,6 +752,7 @@ CONFIG_MII=y # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set # CONFIG_B44 is not set # CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set # CONFIG_KS8851_MLL is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set @@ -726,6 +761,7 @@ CONFIG_WLAN_80211=y # CONFIG_WIFI_NONE is not set CONFIG_BCM4329=y # CONFIG_MV8686 is not set +# CONFIG_BCM4319 is not set # # Enable WiMAX (Networking options) to see the WiMAX drivers @@ -741,8 +777,20 @@ CONFIG_BCM4329=y # CONFIG_USB_USBNET is not set # CONFIG_USB_HSO is not set # CONFIG_WAN is not set -# CONFIG_PPP is not set +CONFIG_PPP=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_BSDCOMP=y +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_PPPOL2TP is not set +# CONFIG_PPPOLAC is not set +# CONFIG_PPPOPNS is not set # CONFIG_SLIP is not set +CONFIG_SLHC=y # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set @@ -788,9 +836,13 @@ CONFIG_KEYS_RK29=y # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_XPT2046_SPI is not set +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set CONFIG_TOUCHSCREEN_ILI2102_IIC=y # CONFIG_TOUCHSCREEN_IT7250 is not set # CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set # CONFIG_TOUCHSCREEN_AD7879 is not set # CONFIG_TOUCHSCREEN_EETI is not set # CONFIG_TOUCHSCREEN_FUJITSU is not set @@ -812,10 +864,7 @@ CONFIG_TOUCHSCREEN_ILI2102_IIC=y # CONFIG_HANNSTAR_P1003 is not set # CONFIG_ATMEL_MXT224 is not set # CONFIG_SINTEK_3FA16 is not set -CONFIG_EETI_EGALAX=y -CONFIG_EETI_EGALAX_MAX_X=1087 -CONFIG_EETI_EGALAX_MAX_Y=800 -# CONFIG_EETI_EGALAX_DEBUG is not set +# CONFIG_EETI_EGALAX is not set # CONFIG_TOUCHSCREEN_IT7260 is not set # CONFIG_TOUCHSCREEN_GT801_IIC is not set CONFIG_INPUT_MISC=y @@ -831,7 +880,12 @@ CONFIG_INPUT_LPSENSOR_ISL29028=y # CONFIG_INPUT_UINPUT is not set # CONFIG_INPUT_GPIO is not set # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -CONFIG_INPUT_WM831X_ON=y + +# +# Magnetometer sensors +# +# CONFIG_COMPASS_AK8975 is not set +# CONFIG_COMPASS_AK8973 is not set CONFIG_G_SENSOR_DEVICE=y # CONFIG_GS_MMA7660 is not set CONFIG_GS_MMA8452=y @@ -863,6 +917,7 @@ CONFIG_DEVKMEM=y # # Non-8250 serial port support # +# CONFIG_SERIAL_MAX3100 is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_RK29=y @@ -912,12 +967,29 @@ CONFIG_I2C3_RK29=y # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set -# CONFIG_SPI is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_GPIO is not set +CONFIG_SPIM_RK29=y +CONFIG_SPIM0_RK29=y +CONFIG_SPIM1_RK29=y + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set CONFIG_ADC=y # CONFIG_ADC_RK28 is not set CONFIG_ADC_RK29=y # CONFIG_SPI_FPGA is not set -# CONFIG_HEADSET_DET is not set +CONFIG_HEADSET_DET=y # # PPS support @@ -938,8 +1010,6 @@ CONFIG_GPIOLIB=y # CONFIG_GPIO_MAX732X is not set # CONFIG_GPIO_PCA953X is not set # CONFIG_GPIO_PCF857X is not set -# CONFIG_GPIO_WM8994 is not set -CONFIG_GPIO_WM831X=y # # PCI GPIO expanders: @@ -948,6 +1018,9 @@ CONFIG_GPIO_WM831X=y # # SPI GPIO expanders: # +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_MC33880 is not set # # AC97 GPIO expanders: @@ -963,17 +1036,13 @@ CONFIG_SPI_FPGA_GPIO_IRQ_NUM=16 CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set # CONFIG_PDA_POWER is not set -CONFIG_WM831X_BACKUP=y -CONFIG_WM831X_POWER=y # CONFIG_BATTERY_DS2760 is not set # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set # CONFIG_BATTERY_STC3100 is not set -CONFIG_BATTERY_BQ27510=y +# CONFIG_BATTERY_BQ27510 is not set # CONFIG_BATTERY_BQ3060 is not set -# CONFIG_CHECK_BATT_CAPACITY is not set -CONFIG_NO_BATTERY_IC=y # CONFIG_HWMON is not set # CONFIG_THERMAL is not set # CONFIG_WATCHDOG is not set @@ -987,7 +1056,7 @@ CONFIG_SSB_POSSIBLE=y # # Multifunction device drivers # -CONFIG_MFD_CORE=y +# CONFIG_MFD_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_MFD_ASIC3 is not set # CONFIG_HTC_EGPIO is not set @@ -1000,13 +1069,16 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_TC6387XB is not set # CONFIG_MFD_TC6393XB is not set # CONFIG_PMIC_DA903X is not set -CONFIG_MFD_WM8994=y +# CONFIG_MFD_WM8994 is not set # CONFIG_MFD_WM8400 is not set -CONFIG_MFD_WM831X=y -CONFIG_MFD_WM831X_I2C=y +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +CONFIG_MFD_WM831X_SPI_A22=y # CONFIG_MFD_WM8350_I2C is not set # CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_MC13783 is not set # CONFIG_AB3100_CORE is not set +# CONFIG_EZX_PCAP is not set CONFIG_REGULATOR=y # CONFIG_REGULATOR_DEBUG is not set # CONFIG_REGULATOR_FIXED_VOLTAGE is not set @@ -1014,14 +1086,12 @@ CONFIG_REGULATOR=y # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set # CONFIG_REGULATOR_BQ24022 is not set # CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_WM8994 is not set -CONFIG_REGULATOR_WM831X=y # CONFIG_REGULATOR_LP3971 is not set # CONFIG_REGULATOR_TPS65023 is not set # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_RK2818_REGULATOR_CHARGE is not set # CONFIG_RK2818_REGULATOR_LP8725 is not set -CONFIG_RK29_PWM_REGULATOR=y +# CONFIG_RK29_PWM_REGULATOR is not set CONFIG_MEDIA_SUPPORT=y # @@ -1183,9 +1253,9 @@ CONFIG_FB_CFB_IMAGEBLIT=y # Frame buffer hardware drivers # # CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_TMIO is not set # CONFIG_FB_RK2818 is not set CONFIG_FB_RK29=y +# CONFIG_FB_WORK_IPP is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set @@ -1194,8 +1264,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_WM831X=y -CONFIG_BACKLIGHT_RK29_BL=y +# CONFIG_BACKLIGHT_RK29_BL is not set # # Display device support @@ -1228,10 +1297,7 @@ CONFIG_LCD_ILI9803_CPT4_3=y # # HDMI support # -CONFIG_HDMI=y -CONFIG_ANX7150=y -# CONFIG_ANX9030 is not set -# CONFIG_HDMI_DEBUG is not set +# CONFIG_HDMI is not set # # Console display driver support @@ -1278,6 +1344,7 @@ CONFIG_SND_JACK=y # CONFIG_SND_EMU10K1_SEQ is not set # CONFIG_SND_DRIVERS is not set # CONFIG_SND_ARM is not set +CONFIG_SND_SPI=y CONFIG_SND_USB=y # CONFIG_SND_USB_AUDIO is not set # CONFIG_SND_USB_CAIAQ is not set @@ -1493,8 +1560,7 @@ CONFIG_USB_ANDROID_MASS_STORAGE=y # CONFIG_NOP_USB_XCEIV is not set CONFIG_USB11_HOST=y CONFIG_USB11_HOST_EN=y -CONFIG_USB20_HOST=y -CONFIG_USB20_HOST_EN=y +# CONFIG_USB20_HOST is not set CONFIG_USB20_OTG=y # CONFIG_DWC_OTG_HOST_ONLY is not set CONFIG_DWC_OTG_DEVICE_ONLY=y @@ -1503,7 +1569,7 @@ CONFIG_DWC_CONN_EN=y CONFIG_DWC_OTG=y CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_UNSAFE_RESUME is not set +CONFIG_MMC_UNSAFE_RESUME=y CONFIG_MMC_EMBEDDED_SDIO=y # CONFIG_MMC_PARANOID_SD_INIT is not set @@ -1530,6 +1596,7 @@ CONFIG_SDMMC1_RK29=y # CONFIG_MMC_SDHCI is not set # CONFIG_MMC_AT91 is not set # CONFIG_MMC_ATMELMCI is not set +# CONFIG_MMC_SPI is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set CONFIG_SWITCH=y @@ -1555,7 +1622,7 @@ CONFIG_RTC_INTF_ALARM_DEV=y # # I2C RTC drivers # -CONFIG_RTC_HYM8563=y +# CONFIG_RTC_HYM8563 is not set # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set @@ -1575,6 +1642,14 @@ CONFIG_RTC_HYM8563=y # # SPI RTC drivers # +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_PCF2123 is not set # # Platform RTC drivers @@ -1590,7 +1665,6 @@ CONFIG_RTC_HYM8563=y # CONFIG_RTC_DRV_M48T59 is not set # CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_V3020 is not set -CONFIG_RTC_DRV_WM831X=y # # on-CPU RTC drivers @@ -2008,6 +2082,7 @@ CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y CONFIG_DECOMPRESS_GZIP=y CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON_ENC8=y diff --git a/arch/arm/mach-rk29/board-rk29-a22.c b/arch/arm/mach-rk29/board-rk29-a22.c index 14f12379f0fb..c5f1005af32f 100755 --- a/arch/arm/mach-rk29/board-rk29-a22.c +++ b/arch/arm/mach-rk29/board-rk29-a22.c @@ -1279,7 +1279,7 @@ struct platform_device rk29_device_gps = { * wm8994 codec * author: qjb@rock-chips.com *****************************************************************************************/ -#if defined(CONFIG_MFD_WM8994) +//#if defined(CONFIG_MFD_WM8994) #if defined (CONFIG_REGULATOR_WM8994) static struct regulator_consumer_supply wm8994_ldo1_consumers[] = { { @@ -1383,7 +1383,7 @@ struct wm8994_pdata wm8994_platdata = { .jd_scthr = 0, .jd_thr = 0, }; -#endif +//#endif #ifdef CONFIG_HEADSET_DET #define HEADSET_GPIO RK29_PIN4_PD2 @@ -1497,9 +1497,9 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = { .type = "wm8994", .addr = 0x1a, .flags = 0, - #if defined(CONFIG_MFD_WM8994) +// #if defined(CONFIG_MFD_WM8994) .platform_data = &wm8994_platdata, - #endif +// #endif }, #endif #if defined (CONFIG_BATTERY_STC3100) diff --git a/drivers/mfd/wm831x-spi-a22.c b/drivers/mfd/wm831x-spi-a22.c index 9e7d9cc0b67d..cf624ccc74a2 100755 --- a/drivers/mfd/wm831x-spi-a22.c +++ b/drivers/mfd/wm831x-spi-a22.c @@ -532,76 +532,36 @@ static int wm831x_init(struct wm831x *wm831x) } - -struct wm831x_on { - struct input_dev *dev; - struct delayed_work work; - struct wm831x *wm831x; - struct wake_lock wm831x_on_wake; -}; - -static struct wm831x_on *g_wm831x_on; - -void rk29_send_wakeup_key(void) -{ - - if(!g_wm831x_on) - { - printk("%s:addr err!\n",__FUNCTION__); - return; - } - input_report_key(g_wm831x_on->dev, KEY_POWER, 1); - input_sync(g_wm831x_on->dev); - input_report_key(g_wm831x_on->dev, KEY_POWER, 0); - input_sync(g_wm831x_on->dev); - //printk("%s\n", __FUNCTION__); -} - +extern void rk28_send_wakeup_key(void); +static int gNumInt = 0; static void wm831x_irq_worker(struct work_struct *work) { struct wm831x *wm831x = container_of(work, struct wm831x, irq_work); - wm831x_reg_write(wm831x, WM831X_INTERRUPT_STATUS_1, 0xffff);//clear all intterupt - rk29_send_wakeup_key(); - //enable_irq(wm831x->irq); + + if(++ gNumInt >= 2) + { + rk28_send_wakeup_key(); + //wake_lock_timeout(&wm831x->irq_wake,msecs_to_jiffies(2000)); + gNumInt = 0; + } + enable_irq(wm831x->irq); wake_unlock(&wm831x->irq_wake); - printk("%s\n",__FUNCTION__); + //printk("%s,irq=%d\n",__FUNCTION__,wm831x->irq); } static irqreturn_t wm831x_irq_thread(int irq, void *data) { struct wm831x *wm831x = data; - //disable_irq_nosync(irq); + disable_irq_nosync(irq); wake_lock(&wm831x->irq_wake); queue_work(wm831x->irq_wq, &wm831x->irq_work); return IRQ_HANDLED; } -static struct platform_driver wm831x_on_driver = { - .driver = { - .name = "wm831x-on", - }, -}; - -static struct platform_device wm831x_on_device = { - .name = "wm831x-on", - .id = -1, - .dev = { - .driver = &wm831x_on_driver.driver, - } - -}; - -static inline void wm831x_on_init(void) -{ - if (platform_driver_register(&wm831x_on_driver) == 0) - (void) platform_device_register(&wm831x_on_device); -} - - static int __devinit wm831x_spi_probe(struct spi_device *spi) { struct wm831x *wm831x; @@ -655,38 +615,6 @@ static int __devinit wm831x_spi_probe(struct spi_device *spi) mutex_init(&wm831x->io_lock); wm831x_init(wm831x); - //wm831x_device_init(wm831x, type, irq); - - dev_set_drvdata(wm831x->dev, wm831x); - wm831x_on_init(); - - g_wm831x_on = kzalloc(sizeof(struct wm831x_on), GFP_KERNEL); - if (!g_wm831x_on) { - printk( "Can't allocate data\n"); - return -ENOMEM; - } - - g_wm831x_on->wm831x = wm831x; - g_wm831x_on->dev = input_allocate_device(); - if (!g_wm831x_on->dev) { - //dev_err(&wm831x->dev, "Can't allocate input dev\n"); - return -ENOMEM; - } - - g_wm831x_on->dev->evbit[0] = BIT_MASK(EV_KEY); - g_wm831x_on->dev->keybit[BIT_WORD(KEY_POWER)] = BIT_MASK(KEY_POWER); - g_wm831x_on->dev->name = "wm831x_on"; - g_wm831x_on->dev->phys = "wm831x_on/input0"; -#if 0 - g_wm831x_on->dev->dev.parent = &wm831x_on_device.dev; - dev_err(&wm831x_on_device.dev, "%s\n", __FUNCTION__); - ret = input_register_device(g_wm831x_on->dev); - if (ret) { - printk( "Can't register input device: %d\n"); - return -ENOMEM; - } - -#endif wm831x->irq_wq = create_singlethread_workqueue("wm831x-irq"); if (!wm831x->irq_wq) { @@ -698,14 +626,14 @@ static int __devinit wm831x_spi_probe(struct spi_device *spi) wake_lock_init(&wm831x->irq_wake, WAKE_LOCK_SUSPEND, "wm831x_irq_wake"); ret = request_threaded_irq(irq, wm831x_irq_thread, NULL, - IRQF_TRIGGER_FALLING, + IRQF_TRIGGER_LOW, "wm831x", wm831x); if (ret != 0) { dev_err(wm831x->dev, "Failed to request IRQ %d: %d\n", wm831x->irq, ret); return ret; } - + wm831x->irq = irq; enable_irq_wake(irq); // so wm831x irq can wake up system /* only support on intterupt */ wm831x_reg_write(wm831x, WM831X_SYSTEM_INTERRUPTS_MASK, 0xefff); @@ -731,6 +659,11 @@ static int wm831x_spi_suspend(struct spi_device *spi, pm_message_t m) //return wm831x_device_suspend(wm831x); } +static int wm831x_spi_resume(struct spi_device *spi) +{ + return 0; +} + static struct spi_driver wm8310_spi_driver = { .driver = { .name = "wm8310", @@ -740,6 +673,7 @@ static struct spi_driver wm8310_spi_driver = { .probe = wm831x_spi_probe, .remove = __devexit_p(wm831x_spi_remove), .suspend = wm831x_spi_suspend, + .resume = wm831x_spi_resume, }; static struct spi_driver wm8311_spi_driver = { diff --git a/drivers/video/display/screen/lcd_ili9803_cpt4_3.c b/drivers/video/display/screen/lcd_ili9803_cpt4_3.c index 1a39d29d0434..f93ff48143e0 100755 --- a/drivers/video/display/screen/lcd_ili9803_cpt4_3.c +++ b/drivers/video/display/screen/lcd_ili9803_cpt4_3.c @@ -8,7 +8,7 @@ /* Base */ #define OUT_TYPE SCREEN_RGB -#define OUT_FACE OUT_P666 +#define OUT_FACE OUT_P888 #define OUT_CLK 26*1000*1000 //***27 #define LCDC_ACLK 150000000 //29 lcdc axi DMA Ƶ�� //rk29 @@ -196,7 +196,7 @@ void set_backlight(int brightness) gpio_direction_output(PIN_BL_SET,GPIO_HIGH); else gpio_direction_output(PIN_BL_SET,GPIO_LOW); - + printk("%s:brightness=%d\n",__FUNCTION__,brightness); } void WriteCommand( int Command) @@ -1380,7 +1380,11 @@ void init_nt35510(void) WriteParameter(0x00); WriteCommand(0X3a00); - WriteParameter(0x60);//WriteParameter(0x66); + +if(OUT_FACE == OUT_P888) + WriteParameter(0x70); //24bit +else if(OUT_FACE == OUT_P666) + WriteParameter(0x60);//18bit WriteCommand(0X3600); WriteParameter(0x00);//R<->B @@ -1427,30 +1431,26 @@ int init(void) int standby(u8 enable) //***enable =1 means suspend, 0 means resume { int i; - set_backlight(0); -#if 0 + if(gLcd_info) gLcd_info->io_init(); if(enable) { - spi_screenreg_cmd(0xB7); - spi_screenreg_param(0x0f); + WriteCommand(0X2800); + set_backlight(0); + mdelay(100); + WriteCommand(0X1000); } else { - CS_OUT() ; - for(i=0; i<6; i++) - { - CS_SET(); - DRVDelayUs(1); - CS_CLR(); - DRVDelayUs(1); - CS_SET(); - mdelay(2); - } + WriteCommand(0X1100); + mdelay(120); + WriteCommand(0X2900); + mdelay(100); + set_backlight(255); } if(gLcd_info) gLcd_info->io_deinit(); -#endif + return 0; } -- 2.34.1