Hi Community,
I'm using an IMX8QXP-MEK board and build with mek_8q_car2-userdebug.
I'm trying to implement hibernate/resume mechanism, based on P9.0.0_2.1.0_AUTO_GA_SOURCE. So now, my team have some problems related to I2C when resume (some error log output forever).
Content of error logs following:
[2019-07-22 15:48:48.679] [ 31.731193] virtio_rpmsg_bus virtio0: creating channel rpmsg-i2c-channel addr 0x2
[2019-07-22 15:48:48.679] [ 31.731207] virtio_rpmsg_bus virtio0: channel rpmsg-i2c-channel:ffffffff:2 already exist
[2019-07-22 15:48:48.679] [ 31.731211] virtio_rpmsg_bus virtio0: rpmsg_create_channel failed
[2019-07-22 15:48:48.679] [ 31.731223] i2c-rpmsg virtio0.rpmsg-i2c-channel.-1.2: expected bus_id:15, addr:1a, received bus_id:5, addr:20
[2019-07-22 15:48:48.721] [ 31.731235] i2c-rpmsg virtio0.rpmsg-i2c-channel.-1.2: expected bus_id:15, addr:1a, received bus_id:5, addr:20
[2019-07-22 15:48:48.722] [ 31.731324] i2c-rpmsg virtio0.rpmsg-i2c-channel.-1.2: expected bus_id:15, addr:1a, received bus_id:15, addr:1d
[2019-07-22 15:48:48.722] [ 31.731336] i2c-rpmsg virtio0.rpmsg-i2c-channel.-1.2: expected bus_id:15, addr:1a, received bus_id:15, addr:1d
I have some questions:
1. Have you any experience about above issue?
2. In my understanding, "i2c-rpmsg" driver not support hibernate/resume functionality. I find document about hibernate/resume of the driver for implement but i not found any document. Have you any document about it?.
3. A35 control I2C1 directly or control via M4 using "rpmsg" ?
a. A35 <---ssi---> I2C1
b. A35 <---rpmsg----> M4 <---ssi--->I2C1
Many thanks,
Son.
Hi Bao
one can try to save and restore (after resume) rpmsg i2c contexts using
sect.2.8 Remote Processor Messaging attached Linux Manual.
>A35 control I2C1 directly ..?
i.MX35 uses SCU responsible for resource partitioning / access control
described in SCFW Porting Kit
Communication mechanisms are abstracted using SCU FW running in the SCU
−other SW components communicate with SCU via an API library
− this library makes Remote Procedure Calls (RPC) via an underlying Inter-Processor
Communication (IPC) mechanism
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello Igor,
Thanks for your reply. About your response, I have some following questions:
1. I wonder what's rpmsg i2c contexts?
You mean that's hardware contexts before start hibernate process of MU and/or I2C, don't you?
Or you're talking about software contexts in I2C and/or RPMsg drivers?
2. Then, in case rpmsg i2c hibernation/resume functionality need to more modification in this drivers (I mean that I2C, RPMsg drivers and more...), does it have any requirements about hibernation/resume order of the drivers?
Thank you,
Son.
Hi Son
for context one can look in general linux literature
https://elinux.org/images/b/b7/Dill-slides_1.pdf
Best regards
igor