友坚恒天Android210更新---支持7寸电阻屏和电容屏
Topic:Android210 支持7寸电阻屏和电容屏(作者:Android210)
//--------------------------------------------------------------------------------------------
// 作者:urbetter(www.urbetter.com)
// 版权:Android210
// 平台:友坚Android210开发板
// 注意事项:未经作者同意,商业网站不能转载,更不得在转载的时候擅自修改、删除文章的任何部分
//----------------------------------------------------------------------------------------------
分享下友坚恒天最新上市三星cortex-A8开发板之安卓210评估板 功能全面 价格实惠 完善的源码资料加速您的开发进程
安卓210评估板详细参数分享:
内核:SamSung ARM Cortex-A8 S5PV210
主频:1Ghz
内存:512M Bytes DDR2
Flash:512M Bytes SLC NAND FLASH
系统:Android4.0.3
显示屏:7寸 800*480,支持10.1寸高清屏
触摸屏:7寸 5点电容式触摸屏
存储空间:支持32G SD卡扩展
选配功能:摄像头,UT_AVIN,GPS,蓝牙,wifi,3G
重力感应:支持
外设接口:高清HDMI,RJ45(有线)网口,音频输入输出,
USB-OTG,USB-HOST,串口,LCD,IIC,SPI/AD,GPIO
其他特性:支持MPEG-4/MPEG2、H264/H263、VC-1的视频编解码1080P@30fps
2D图形加速,最大支持8000*8000
3D图形加速(SGX540),OGL-1.1&2.0、OpenVG1.0
JPEG硬件编解码,最大支持8192*8192
另附:
andriod210评估板安卓4.0体验版资料分享,有需要的朋友可以免费下载喔!http://www.urbetter.com/main.asp
添加向导
进入内核目录arch/arm/mach-s5pv210/ 打开mach-s5pv210.c 文件,
添加代码如下:
==========找到如下代码==========
#ifdef CONFIG_TOUCHSCREEN_EGALAX
static struct i2c_gpio_platform_data i2c5_platdata = {
.sda_pin = S5PV210_GPB(6),
.scl_pin = S5PV210_GPB(7),
.udelay = 2,
.sda_is_open_drain = 0,
.scl_is_open_drain = 0,
.scl_is_output_only = 0.
};
在这段代码的前面加入如下代码:
#if defined(CONFIG_TOUCHSCREEN_S3C)
static struct s3c_ts_mach_info s3c_ts_platform __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
.resol_bit = 12,
.s3c_adc_con = ADC_TYPE_2,
};
/* Touch srcreen */
static struct resource s3c_ts_resource[] = {
[0] = {
.start = S3C_PA_ADC1,
.end = S3C_PA_ADC1 + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_PENDN1,
.end = IRQ_PENDN1,
.flags = IORESOURCE_IRQ,
},
[2] = {
.start = IRQ_ADC1,
.end = IRQ_ADC1,
.flags = IORESOURCE_IRQ,
}
};
struct platform_device s3c_device_ts1 = {
.name = "s3c-ts",
.id = -1,
.num_resources = ARRAY_SIZE(s3c_ts_resource),
.resource = s3c_ts_resource,
};
void __init s3c_ts_set_platdata(struct s3c_ts_mach_info *pd)
{
struct s3c_ts_mach_info *npd;
npd = kmalloc(sizeof(*npd), GFP_KERNEL);
if (npd) {
memcpy(npd, pd, sizeof(*npd));
s3c_device_ts1.dev.platform_data = npd;
} else {
pr_err("no memory for Touchscreen platform data\n");
}
}
#endif
找到函数static void __init smdkv210_machine_init(void)
==找到如下代码=====
s3c24xx_ts_set_platdata(&s3c_ts_platform);
修改如下:
#if defined (CONFIG_TOUCHSCREEN_S3C)
s3c_ts_set_platdata(&s3c_ts_platform);
#else
s3c24xx_ts_set_platdata(&s3c_ts_platform);
#endif
D.找如下代码:
#ifndef CONFIG_TOUCHSCREEN_S3C
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
.cal_x_max = 800,
.cal_y_max = 480,
.cal_param = {
-13357, -85, 53858048, -95, -8493, 32809514, 65536
},
};
#endif 注意红色的为添加的。
找到下面的代码:
static struct platform_device *smdkv210_devices[] __initdata = {
&s3c_device_adc,
&s3c_device_cfcon,
&s3c_device_fb,
&s3c_device_hsmmc0,
&s3c_device_hsmmc1,
&s3c_device_hsmmc2,
&s3c_device_hsmmc3,
&s3c_device_i2c0,
&s3c_device_i2c1,
&s3c_device_i2c2,
&s3c_device_gpio_i2c3,
#ifdef CONFIG_TOUCHSCREEN_EGALAX
&s3c_device_i2c5,
#endif
&s3c_device_rtc,
&s3c_device_ts,
&s3c_device_wdt,
#ifdef CONFIG_SND_SAMSUNG_AC97
&s5pv210_device_ac97,
#endif
#ifdef CONFIG_SND_SAMSUNG_I2S
&s5pv210_device_iis0,
&s5pv210_device_iis1,
&s5pv210_device_iis2,
#endif
&s5pv210_device_spdif,
#ifdef CONFIG_SND_SAMSUNG_PCM
#ifdef CONFIG_SND_SAMSUNG_PCM_USE_I2S1_MCLK
&s5pv210_device_pcm0,
#endif
#endif /*end of CONFIG_SND_SAMSUNG_PCM*/
&samsung_asoc_dma,
&samsung_device_keypad,
&smdkv210_dm9000,
&smdkv210_lcd_lte480wv,
&s3c_device_timer[0],
&smdkv210_backlight_device,
&s5p_device_ehci,
&s5p_device_ohci,
#ifdef CONFIG_USB_GADGET
&s3c_device_usbgadget,
#endif
#ifdef CONFIG_VIDEO_FIMC
&s3c_device_fimc0,
&s3c_device_fimc1,
&s3c_device_fimc2,
#endif
#ifdef CONFIG_VIDEO_FIMC_MIPI
&s3c_device_csis,
#endif
#ifdef CONFIG_VIDEO_JPEG_V2
&s3c_device_jpeg,
#endif
#ifdef CONFIG_VIDEO_MFC50
&s3c_device_mfc,
#endif
#ifdef CONFIG_ANDROID_PMEM
&pmem_gpu1_device,
#endif
#ifdef CONFIG_SPI_S3C64XX
&s5pv210_device_spi0,
&s5pv210_device_spi1,
#endif
#ifdef CONFIG_REGULATOR
&smdkv210_b_pwr_5v,
#endif
#ifdef CONFIG_S5PV210_POWER_DOMAIN
&s5pv210_pd_tv,
&s5pv210_pd_lcd,
&s5pv210_pd_g3d,
&s5pv210_pd_mfc,
&s5pv210_pd_audio,
#endif
&s3c_device_g3d,
#ifdef CONFIG_VIDEO_G2D
&s3c_device_g2d,
#endif
#ifdef CONFIG_VIDEO_TV20
&s5p_device_tvout,
&s5p_device_cec,
&s5p_device_hpd,
#endif
#ifdef CONFIG_MTD_NAND
&s3c_device_nand,
#endif
//================
#ifdef CONFIG_TOUCHSCREEN_S3C
&s3c_device_ts1
#endif
//===============红色部分为添加的代码
};
2.进入arch/arm/plat-samsung/include/plat目录找到打开ts.h文件,
找到如下代码:
#ifndef __ASM_ARM_TS_H
#define __ASM_ARM_TS_H
struct s3c2410_ts_mach_info {
int delay;
int presc;
int oversampling_shift;
int cal_x_max;
int cal_y_max;
int cal_param[7];
void (*cfg_gpio)(struct platform_device *dev);
};
extern void s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *);
extern void s3c24xx_ts1_set_platdata(struct s3c2410_ts_mach_info *);
/* defined by architecture to configure gpio */
extern void s3c24xx_ts_cfg_gpio(struct platform_device *dev);
#if defined (CONFIG_TOUCHSCREEN_S3C)
//=========================
enum s3c_adc_type {
ADC_TYPE_0,
ADC_TYPE_1, /* S3C2416, S3C2450 */
ADC_TYPE_2, /* S3C64XX, S5PC1XX */
};
struct s3c_ts_mach_info {
int delay;
int presc;
int oversampling_shift;
int resol_bit;
enum s3c_adc_type s3c_adc_con;
};
struct s3c_ts_info {
struct input_dev *dev;
long xp;
long yp;
int count;
int shift;
char phys[32];
int resol_bit;
enum s3c_adc_type s3c_adc_con;
};
//=========================
#endif 红色部分为添加的代码
#endif /* __ASM_ARM_TS_H */
3.编译内核支持7寸电阻屏
4.把文件夹下面的的文件放在相应的文件夹下面,即完成电阻触摸屏驱动的加载。
/*===========================================================*/
//如有错误,请留言指正;同时希望有更好的方法与大家交流和分享,让我们大家一起学习,共同进步!