We have had a solution running on 4.1.19-bone20 kernel for over a year. Now I am trying to add battery controlled shutdown to the Bone but came to the conclusion that the unit treats power removal as a push button event and immediately powers down. This doesn’t work for our application, we need to be able to control the shutdown. After some scrounging around Groups I saw the (https://groups.google.com/forum/#!topic/beagleboard/DfkWz9qlqA8) problem was that the tps65217 kernel code needed modification. I decided to update to the latest kernel (4.14.26-bone13) to see if it was resolved. I did that and it is indeed fixed. Now I have to re-work my Device Tree Blob for this kernel.
No problem, I downloaded the kernel source and made by changes and compiled it. I moved the dtb to the Bone and rebooted. Everything comes online as expected except the PCA9544 I2C mux.
I checked dmesg and there are no entries, good or bad, relating to the mux.
According to /Kernel/Documentation/devicetree/bindings/i2c/i2c-mux.txt, nothing should have dramatically changed between the two kernels.
After much experimentation, trying the various options, etc, I’ve decided to seek help.
Here is my entry made in am335x-bone-common.dtsi.
`
&i2c1 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <400000>;
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&i2c1_pins>;
mux@70 {
#address-cells = <1>;
#size-cells = <0>;
compatible = “nxp,pca9544”;
reg = <0x70>;
i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x03>;
};
i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x04>;
};
i2c@5 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x05>;
};
i2c@6 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x06>;
};
};
};
`
I can confirm that the mux is available and functioning using i2cget/set commands.
Can anyone recommend an approach to troubleshoot this further? Any useful logs that I am not seeing?
Also just for reference, this is how I had the entry structured on 4.1.19-bone20 before changing it to what is shown above.
`
&i2c1 {
pinctrl-names = “default”;
pinctrl-0 = <&i2c1_pins>;
status = “okay”;
clock-frequency = <400000>;
mux@70 {
compatible = “nxp,pca9544”;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x70>;
};
};
`
Thank you!
Bruce