add camera support and rtc for newton board
author蔡枫 <cf@rock-chips.com>
Tue, 28 Jun 2011 07:24:06 +0000 (15:24 +0800)
committer蔡枫 <cf@rock-chips.com>
Tue, 28 Jun 2011 07:24:06 +0000 (15:24 +0800)
arch/arm/configs/rk29_newton_defconfig
arch/arm/mach-rk29/board-rk29-newton.c
arch/arm/mach-rk29/include/mach/board.h
drivers/input/touchscreen/ft5406_ts.c
drivers/media/video/ov2655.c
drivers/misc/Kconfig [changed mode: 0644->0755]
drivers/misc/Makefile [changed mode: 0644->0755]
drivers/misc/newton.c [new file with mode: 0755]
drivers/rtc/rtc-m41t66.c

index d98afca37bab4f7d4910563a015cfdd5528c5437..cfb9c1d944f63728da3881ffb5aebb2ce0068c1a 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.32.27
-# Sat Jun 25 21:45:29 2011
+# Tue Jun 28 10:17:07 2011
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -655,6 +655,7 @@ CONFIG_APANIC_PLABEL="kpanic"
 # CONFIG_MTK23D is not set
 # CONFIG_FM580X is not set
 # CONFIG_MU509 is not set
+CONFIG_RK29_NEWTON=y
 # CONFIG_C2PORT is not set
 
 #
@@ -664,8 +665,7 @@ CONFIG_APANIC_PLABEL="kpanic"
 # CONFIG_EEPROM_LEGACY is not set
 # CONFIG_EEPROM_MAX6875 is not set
 # CONFIG_EEPROM_93CX6 is not set
-CONFIG_RK29_SUPPORT_MODEM=y
-CONFIG_MODEM_ROCKCHIP_DEMO=y
+# CONFIG_RK29_SUPPORT_MODEM is not set
 # CONFIG_RK29_GPS is not set
 
 #
@@ -946,7 +946,8 @@ CONFIG_UART0_CTS_RTS_RK29=y
 CONFIG_UART1_RK29=y
 CONFIG_UART2_RK29=y
 CONFIG_UART2_CTS_RTS_RK29=y
-# CONFIG_UART3_RK29 is not set
+CONFIG_UART3_RK29=y
+CONFIG_UART3_CTS_RTS_RK29=y
 CONFIG_SERIAL_RK29_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -980,9 +981,6 @@ CONFIG_RK29_I2C1_CONTROLLER=y
 CONFIG_I2C2_RK29=y
 CONFIG_RK29_I2C2_CONTROLLER=y
 # CONFIG_RK29_I2C2_GPIO is not set
-CONFIG_I2C3_RK29=y
-CONFIG_RK29_I2C3_CONTROLLER=y
-# CONFIG_RK29_I2C3_GPIO is not set
 CONFIG_I2C_DEV_RK29=y
 
 #
@@ -1013,7 +1011,7 @@ CONFIG_RK_HEADSET_DET=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
 CONFIG_GPIOLIB=y
 # CONFIG_DEBUG_GPIO is not set
-# CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_SYSFS=y
 
 #
 # Memory mapped GPIO expanders:
@@ -1157,9 +1155,9 @@ CONFIG_SOC_CAMERA=y
 # CONFIG_SOC_CAMERA_PLATFORM is not set
 # CONFIG_SOC_CAMERA_OV772X is not set
 # CONFIG_SOC_CAMERA_OV7675 is not set
-# CONFIG_SOC_CAMERA_OV2655 is not set
+CONFIG_SOC_CAMERA_OV2655=y
 # CONFIG_SOC_CAMERA_OV2659 is not set
-CONFIG_SOC_CAMERA_OV9650=y
+# CONFIG_SOC_CAMERA_OV9650 is not set
 # CONFIG_SOC_CAMERA_OV2640 is not set
 # CONFIG_SOC_CAMERA_OV3640 is not set
 # CONFIG_SOC_CAMERA_OV5642 is not set
@@ -1682,7 +1680,7 @@ CONFIG_RTC_INTF_ALARM_DEV=y
 # I2C RTC drivers
 #
 # CONFIG_RTC_HYM8563 is not set
-CONFIG_RTC_DRV_M41T66=y
+CONFIG_RTC_M41T66=y
 # CONFIG_RTC_DRV_DS1307 is not set
 # CONFIG_RTC_DRV_DS1374 is not set
 # CONFIG_RTC_DRV_DS1672 is not set
index e7a2e825682105e0d1a9cd3a68b82ec13ee57edb..08304f2290f6bae6592243153b8e7db969f6c6a8 100755 (executable)
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_0    1
 #define CONFIG_SENSOR_POWER_PIN_0         INVALID_GPIO
 #define CONFIG_SENSOR_RESET_PIN_0         INVALID_GPIO
-#define CONFIG_SENSOR_POWERDN_PIN_0       RK29_PIN5_PD7
+#define CONFIG_SENSOR_POWERDN_PIN_0       INVALID_GPIO
 #define CONFIG_SENSOR_FALSH_PIN_0         INVALID_GPIO
 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_0 RK29_CAM_POWERACTIVE_L
 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_0 RK29_CAM_RESETACTIVE_L
 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_H
 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_L
 
-#define CONFIG_SENSOR_1 RK29_CAM_SENSOR_OV2659                      /* front camera sensor */
-#define CONFIG_SENSOR_IIC_ADDR_1           0x60
+#define CONFIG_SENSOR_1                   RK29_CAM_SENSOR_OV2655                      /* front camera sensor */
+#define CONFIG_SENSOR_IIC_ADDR_1             0x60
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_1    1
 #define CONFIG_SENSOR_POWER_PIN_1         INVALID_GPIO
 #define CONFIG_SENSOR_RESET_PIN_1         INVALID_GPIO
@@ -396,7 +396,17 @@ static struct platform_device rk29_v4l2_output_devce = {
        .name           = "rk29_vout",
 };
 #endif
-
+#ifdef CONFIG_RK29_NEWTON
+struct rk29_newton_data rk29_newton_info = {   
+};
+struct platform_device rk29_device_newton = {
+       .name          = "rk29_newton",
+       .id            = -1,            
+       .dev               = {
+       .platform_data = &rk29_newton_info,     
+               }           
+       };
+#endif
 #if defined (CONFIG_TOUCHSCREEN_FT5406)
 #define TOUCH_RESET_PIN RK29_PIN6_PC3
 #define TOUCH_INT_PIN   RK29_PIN0_PA2
@@ -1468,6 +1478,9 @@ static struct platform_device *devices[] __initdata = {
 #ifdef CONFIG_VIDEO_RK29XX_VOUT
        &rk29_v4l2_output_devce,
 #endif
+#ifdef CONFIG_RK29_NEWTON
+       &rk29_device_newton,
+#endif
 };
 
 /*****************************************************************************************
index 7f66850eb05d243ffd792652e5ccedbc6cf5ccf1..e4b3d924b6ef3edc708c2aaae84c590482430554 100755 (executable)
@@ -242,6 +242,8 @@ struct rk29_gpio_expander_info {
        unsigned int pin_type;//GPIO_IN or GPIO_OUT
        unsigned int pin_value;//GPIO_HIGH or GPIO_LOW
 };
+struct rk29_newton_data {
+};
 
 struct tca6424_platform_data {
        /*  the first extern gpio number in all of gpio groups */
index 72ae097c9fb8c7830e7c181c720274556ded2973..c262782ced79c3a119840ef3eeb835d502d4d8f6 100755 (executable)
@@ -491,8 +491,8 @@ static void ft5x0x_report_value(struct ft5x0x_ts_data *data )
                input_report_abs(data->input_dev, ABS_Y, event->y1);
                input_report_abs(data->input_dev, ABS_PRESSURE, event->pressure);
        //}
-       //printk("x = %d,y = %d\n",event->x1,event->y1);
-       input_report_key(data->input_dev, BTN_TOUCH, 1);
+       printk("x = %d,y = %d\n",event->x1,event->y1);
+       //input_report_key(data->input_dev, BTN_TOUCH, 1);
 #endif /* CONFIG_FT5X0X_MULTITOUCH*/
        input_sync(data->input_dev);
 
index 3699deffa2c9960540b8523fbb7d3550d493047e..df7b8a8ab9ebce297972f7e96d3a9c3349b63929 100755 (executable)
@@ -70,7 +70,7 @@ module_param(debug, int, S_IRUGO|S_IWUSR);
 
 #define CONFIG_SENSOR_I2C_SPEED     100000       /* Hz */
 /* Sensor write register continues by preempt_disable/preempt_enable for current process not be scheduled */
-#define CONFIG_SENSOR_I2C_NOSCHED   1
+#define CONFIG_SENSOR_I2C_NOSCHED   0
 #define CONFIG_SENSOR_I2C_RDWRCHK   1
 
 #define SENSOR_BUS_PARAM  (SOCAM_MASTER | SOCAM_PCLK_SAMPLE_RISING |\
old mode 100644 (file)
new mode 100755 (executable)
index b47b6b5..0d3ad52
@@ -300,6 +300,10 @@ config MU509
        bool "MU509 modem control driver"
        default n
        
+config RK29_NEWTON
+       bool "RK29_NEWTON misc driver"
+       default n
+
 source "drivers/misc/c2port/Kconfig"
 source "drivers/misc/eeprom/Kconfig"
 source "drivers/misc/cb710/Kconfig"
old mode 100644 (file)
new mode 100755 (executable)
index 7381902..c3dc3cf
@@ -35,3 +35,5 @@ obj-$(CONFIG_STE)             += ste.o
 obj-$(CONFIG_RK29_SUPPORT_MODEM)        += rk29_modem/
 obj-$(CONFIG_GPS_GNS7560)                      +=      gps/
 obj-y += mpu3050/
+obj-$(CONFIG_RK29_NEWTON)                      +=      newton.o
+
diff --git a/drivers/misc/newton.c b/drivers/misc/newton.c
new file mode 100755 (executable)
index 0000000..1099dd5
--- /dev/null
@@ -0,0 +1,155 @@
+#include <linux/input.h>\r
+#include <linux/module.h>\r
+#include <linux/init.h>\r
+#include <linux/interrupt.h>\r
+#include <linux/kernel.h>\r
+#include <linux/fcntl.h>\r
+#include <linux/delay.h>\r
+#include <linux/device.h>\r
+#include <linux/miscdevice.h>\r
+#include <asm/types.h>\r
+#include <mach/gpio.h>\r
+#include <mach/iomux.h>\r
+#include <linux/platform_device.h>\r
+#include <asm/uaccess.h>\r
+#include <linux/wait.h>\r
+#include <mach/board.h>\r
+\r
+\r
+\r
+\r
+#if 1\r
+#define DBG(x...)      printk(KERN_INFO x)\r
+#else\r
+#define DBG(x...)\r
+#endif\r
+\r
+\r
+\r
+\r
+\r
+\r
+int rk29_newton_open(struct inode *inode, struct file *filp)\r
+{\r
+    DBG("%s\n",__FUNCTION__);\r
+\r
+       return 0;\r
+}\r
+\r
+ssize_t rk29_newton_read(struct file *filp, char __user *ptr, size_t size, loff_t *pos)\r
+{\r
+    DBG("%s\n",__FUNCTION__);\r
+       return sizeof(int);\r
+}\r
+\r
+int rk29_newton_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)\r
+{\r
+       int ret = 0;\r
+       struct rk29_newton_data *pdata ;//= pgps;\r
+    DBG("%s\n",__FUNCTION__);\r
+       return ret;\r
+}\r
+\r
+\r
+int rk29_newton_release(struct inode *inode, struct file *filp)\r
+{\r
+    DBG("%s\n",__FUNCTION__);\r
+    \r
+       return 0;\r
+}\r
+\r
+\r
+static struct file_operations rk29_newton_fops = {\r
+       .owner   = THIS_MODULE,\r
+       .open    = rk29_newton_open,\r
+       .read    = rk29_newton_read,\r
+       .ioctl   = rk29_newton_ioctl,\r
+       .release = rk29_newton_release,\r
+};\r
+\r
+\r
+static struct miscdevice rk29_newton_dev = \r
+{\r
+    .minor = MISC_DYNAMIC_MINOR,\r
+    .name = "newton",\r
+    .fops = &rk29_newton_fops,\r
+};\r
+\r
+\r
+static int rk29_newton_probe(struct platform_device *pdev)\r
+{\r
+       int ret = 0;\r
+       struct rk29_newton_data *pdata = pdev->dev.platform_data;\r
+       if(!pdata)\r
+               return -1;\r
+       DBG("%s",__FUNCTION__);\r
+       ret = misc_register(&rk29_newton_dev);\r
+       if (ret < 0){\r
+               printk("rk29 newton register err!\n");\r
+               return ret;\r
+       }\r
+       #if 0\r
+       init_MUTEX(&pdata->power_sem);\r
+       pdata->wq = create_freezeable_workqueue("rk29_gps");\r
+       INIT_WORK(&pdata->work, rk29_gps_delay_power_downup);\r
+       pdata->power_flag = 0;\r
+\r
+       //gps power down\r
+       rk29_gps_uart_to_gpio(pdata->uart_id);\r
+       if (pdata->power_down)\r
+               pdata->power_down();\r
+       if (pdata->reset)\r
+               pdata->reset(GPIO_LOW);\r
+\r
+       pgps = pdata;\r
+#endif\r
+\r
+       DBG("%s:rk29 newton initialized\n",__FUNCTION__);\r
+\r
+       return ret;\r
+}\r
+\r
+static int rk29_newton_remove(struct platform_device *pdev)\r
+{\r
+       misc_deregister(&rk29_newton_dev);\r
+       return 0;\r
+}\r
+\r
+\r
+int rk29_newton_suspend(struct platform_device *pdev,  pm_message_t state)\r
+{\r
+       return 0;       \r
+}\r
+\r
+int rk29_newton_resume(struct platform_device *pdev)\r
+{\r
+       return 0;\r
+}\r
+\r
+\r
+static struct platform_driver rk29_newton_driver = {\r
+       .probe      = rk29_newton_probe,\r
+       .remove     = rk29_newton_remove,\r
+       .suspend        = rk29_newton_suspend,\r
+       .resume         = rk29_newton_resume,\r
+       .driver     = {\r
+               .name   = "rk29_newton",\r
+               .owner  = THIS_MODULE,\r
+       },\r
+};\r
+\r
+static int __init rk29_newton_init(void)\r
+{\r
+       return platform_driver_register(&rk29_newton_driver);\r
+}\r
+\r
+static void __exit rk29_newton_exit(void)\r
+{\r
+       platform_driver_unregister(&rk29_newton_driver);\r
+}\r
+\r
+module_init(rk29_newton_init);\r
+module_exit(rk29_newton_exit);\r
+MODULE_DESCRIPTION ("rk29 newton misc driver");\r
+MODULE_LICENSE("GPL");\r
+\r
index c233068971e1f4928e5407493ee53b840aa3e318..f4dee44b758630fed1977710623a4342185b4788 100755 (executable)
 \r
 \r
 #define DRV_VERSION "0.05"\r
-#define DRV_NAME  "rtc-M41T62"\r
+#define DRV_NAME  "rtc-M41T66"\r
 #if 1\r
 #define DBG   printk//(x...)   printk(KERN_INFO  "rtc-M41T62:" x)\r
 #else\r