__raw_readl()对于飞思卡尔i.MX 6 PXP寄存器始终返回0x00

时间:2019-07-11 14:04:12

标签: c linux-kernel linux-device-driver imx6

我正在使用定制板上的Freescale i.MX6DualLite处理器。 imx相机HAL支持SoC的Pixel Pipeline模块来转换USB相机的像素格式。因此,我将以下内核驱动程序移植到了我的内核中:

https://github.com/boundarydevices/linux-imx6.git

分支:boundary-imx-o8.0.0_1.0.0-ga

不幸的是,无法访问PXP。 ioctl()调用PXP_IOC_CONFIG_CHAN,PXP_IOC_START_CHAN和PXP_IOC_WAIT4CMPLT失败,因为未触发PXP中断。 因此,我添加了几个printk()语句来检查PXP寄存器:

[67221.574349] pxp: HW_PXP_CTRL 0x0
[67221.574352] pxp: HW_PXP_STAT 0x0
[67221.574355] pxp: HW_PXP_OUT_CTRL 0x0
[67221.574357] pxp: HW_PXP_OUT_BUF 0x0
[67221.574360] pxp: HW_PXP_AS_CTRL 0x0
[67221.574363] pxp: HW_PXP_AS_BUF 0x0
[67221.574365] pxp: HW_PXP_PS_CTRL 0x0
[67221.574368] pxp: HW_PXP_PS_BUF 0x0

每个相关寄存器均为0x00。我对时钟机制和CCM寄存器进行了三重检查:PXP具有时钟信号。因此,我认为这不是问题。我还验证了DTS中指定的PXP寄存器地址。它是正确的,并且已成功重新映射到我的内核内存中。我也玩过ioremap_no_cache(),但没有帮助。

所以我的问题是:任何飞思卡尔i.MX6模块都遇到过类似的问题吗?我缺少某种使能信号吗?

0 个答案:

没有答案