解决s5pv210电阻触摸屏驱动无法响应中断的问题

在移植uboot2014.04和linux3.10内核后,遇到电阻触摸屏驱动无法响应中断的问题。经过排查,发现并非内核中断管理初始化错误,而是电源管理芯片max8698未初始化。在出厂uboot的lowlevel_init.S中添加PMIC_InitIp()函数后,触摸屏能正常触发中断。提供了解决问题的uboot2014.04.tar.bz2和补丁链接。
摘要由CSDN通过智能技术生成

问题背景:

       移植完uboot2014.04和linux3.10内核后,编写电阻触摸屏驱动,驱动程序不响应中断,刚开始以为是移植的内核对s5pv210中断管理的初始化有问题,经过痛苦的内核浏览过程发现中断向量和中断管理都初始化正确。后来用TQ210自带的uboot和内核加载触摸屏驱动后发现能正常触发中断,自带的kernel和uboot,移植的kernel和uboot,那么有四种组合去尝试定位错误。用出厂自带的uboot+自己移植的kernel发现也能触发中断,那么就定位到uboot出错了,通过比较移植的uboot和出厂自带的uboot,发现在出厂uboot的lowlevel_init.S中带有一个函数PMIC_InitIp(),这个函数用来初始化核心板里面的电源管理芯片max8698,后来查阅s5pv210发现触摸屏恰好被电源管理芯片所管理,那么当电源管理芯片未初始化时,电阻触摸屏是无法采样并触发中断的。如下图所示:

lowlevel_init.S初始化中添加如下代码:

	/*初始化电源管理芯片*/
	/* PS_HOLD(GPJ2_5) set to output high */
	ldr		r0, =ELFIN_GPIO_BASE
	ldr		r1, =0x00100000
	str		r1, [r0, #GPJ2CON_OFFSET]

	ldr		r1, =0x0400
	str		r1, [r0, #GPJ2PUD_OFFSET]

	ldr		r1, =0x20
	str		r1, [r0, #GPJ2DAT_OFFSET]
	
	/* IO Retention release */
	ldr	r0, =(ELFIN_CLOCK_POWER_BASE + OTHERS_OFFSET)
	ldr	r1, [r0]
	ldr	r2, =IO_RET_REL
	orr	r1, r1, r2
	str	r1, [r0]
	
	/* PS_HOLD pin(GPH0_0) set to high */
	ldr	r0, =(ELFIN_CLOCK_POWER_BASE + PS_HOLD_CONTROL_OFFSET)
	ldr	r1, [r0]
	orr	r1, r1, #0x300
	orr	r1, r1, #0x1	
	str	r1, [r0]
	
    /*在/board/samsung/tq210/Pmic.c*/
	bl PMIC_InitIp

u-boot-2014.04/board/sams
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值