Firefly开源社区

打印 上一主题 下一主题

关于DSI读取寄存器的问题

238

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
238

关于DSI读取寄存器的问题

发表于 2017-7-17 14:57:57      浏览:12618 | 回复:8        打印      只看该作者   [复制链接] 楼主
请问有人调用过,rk32_mipi_dsi.c 的rk32_mipi_dsi_read_dcs_packet函数吗?
我调用后,发现读回值都是0,LOG如下
[   47.528255] write GEN_HDR:00000a06
[   47.528314] rk32_mipi_dsi_read_dcs_packet==0x00000000
[   61.357196] write GEN_HDR:00000a06
[   61.357252] rk32_mipi_dsi_read_dcs_packet==0x00000000
还请大大们协助
谢谢~~
回复

使用道具 举报

238

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
238
发表于 2017-7-20 14:22:24        只看该作者  沙发
解决了
0x06改0x14就好了
回复

使用道具 举报

15

积分

0

威望

0

贡献

技术小白

积分
15
发表于 2019-6-14 09:06:44        只看该作者  板凳
clare1942 发表于 2017-7-20 14:22
解决了
0x06改0x14就好了

你好,我也遇到相同的问题,没明白你说的意思,能具体说明吗,哪个0x06改成0x14 ?
回复

使用道具 举报

238

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
238
发表于 2019-6-14 10:49:05        只看该作者  地板
gaozhm 发表于 2019-6-14 09:06
你好,我也遇到相同的问题,没明白你说的意思,能具体说明吗,哪个0x06改成0x14 ?

14:GEN read 1-parameter
06:DCS read 0-parameter
例如 : echo "-r 1,14,51,01," > /sys/kernel/debug/mipidsi0
不过,读写的程序我是有修改过
没改的话我不知是否可以读回
回复

使用道具 举报

15

积分

0

威望

0

贡献

技术小白

积分
15
发表于 2019-6-14 11:29:34        只看该作者  5#
本帖最后由 gaozhm 于 2019-6-14 11:30 编辑
clare1942 发表于 2019-6-14 10:49
14:GEN read 1-parameter
06:DCS read 0-parameter
例如 : echo "-r 1,14,51,01," > /sys/kernel/deb ...

不是用函数接口去读吗,怎么是用指令?这个指令里面各字段是什么意思? 我试了一下,没反应。
回复

使用道具 举报

238

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
238
发表于 2019-6-14 21:56:05        只看该作者  6#
gaozhm 发表于 2019-6-14 11:29
不是用函数接口去读吗,怎么是用指令?这个指令里面各字段是什么意思? 我试了一下,没反应。

如果是在安卓内部当然是透过函数接口
我说的是用台式机透过ADB去读写MIPI寄存器
回复

使用道具 举报

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2019-12-20 21:48:43        只看该作者  7#
请问下具体怎么去读写寄存器,能讲详细一点吗?多谢
回复

使用道具 举报

68

积分

0

威望

0

贡献

技术小白

积分
68
发表于 2021-3-8 13:45:09        只看该作者  8#
clare1942 发表于 2017-7-20 14:22
解决了
0x06改0x14就好了

楼主说的应该是这段代码,看到源码中写死了。
  1. static int rk32_mipi_dsi_read_dcs_packet(void *arg, unsigned char *data1, u32 n)
  2. {
  3.         struct dsi *dsi = arg;
  4.         unsigned char regs[2];
  5.         u32 data = 0;
  6.         int type = 0x06;
  7.         regs[0] = LPDT;
  8.         regs[1] = 0x0a;
  9.         n = n - 1;

  10.         rk32_dsi_set_bits(dsi, regs[0], dcs_sr_0p_tx);
  11.         /*
  12.         if(type == DTYPE_GEN_SWRITE_0P)
  13.                 data = (dsi->vid << 6) | (n << 4) | type;
  14.         else
  15.                 data = (dsi->vid << 6) | ((n-1) << 4) | type;
  16.         */

  17.         data |= regs[1] << 8 | type;

  18.         printk("write GEN_HDR:%08x\n", data);

  19.         rk32_dsi_set_bits(dsi, 0xFFFF, bta_to_cnt);
  20.         rk32_dsi_set_bits(dsi, 1, bta_en);
  21.         rk32_dsi_set_bits(dsi, data, GEN_HDR);
  22.         udelay(20);

  23.         printk("rk32_mipi_dsi_read_dcs_packet==0x%x\n", rk32_dsi_get_bits(dsi, GEN_PLD_DATA));
  24.         rk32_dsi_set_bits(dsi, 0, bta_en);

  25.         return 0;
  26. }
复制代码
回复

使用道具 举报

68

积分

0

威望

0

贡献

技术小白

积分
68
发表于 2021-3-8 14:33:40        只看该作者  9#
大鲸鱼 发表于 2021-3-8 13:45
楼主说的应该是这段代码,看到源码中写死了。

regs[1] = 0x0a;
0x0a 应该是寄存器地址,我看了两个LCD芯片的手册,都是 Read Display Power Mode(0Ah)寄存器,要访问你的寄存器,改这个位置就可以了。另外改形参部分会更好。
如果解决了你的问题,欢迎关注一下我公众号:深海大石斑  ,准备就靠这个买零食了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表