Hi.
Inputs 1:
- EVB with i.mx6-DL;
- Custom board with i.mx6-Solo;
- Yocto 2.0 / 2.1 / 2.2;
- galcore.ko;
insmode galcore.ko - It works perfectly ( I see /dev/galcore )
Inputs 2:
- EVB with i.mx6-DL;
- Custom board with i.mx6-Solo;
- Yocto 2.5 / 2.6 / 2.7 / 2.8 / 2.9 / 3.0 , with kernel 4.9xx / 4.14xx / 4.19xx / 5.xx
- galcore.ko;
insmode galcore.ko - does not work ( I do not see /dev/galcore )
On display:
insmod galcore.ko
galcore 130000.gpu: ignoring dependency for device, assuming no driver
I'm trying to debug the kernel with printk & I see:
In the file - KERNEL_SOURCE/drivers/base/power/domain.c
In the function - static struct generic_pm_domain *genpd_get_from_provider( struct of_phandle_args *genpdspec )
I see problem in string : if ( provider->node == genpdspec->np) .
Unfortunately I see that - provider->node !=genpdspec->np
I continue to debug i.mx6-Solo ( custom board ) & see:
provider->node->name ---> power-domain
provider->node->full_name ---> power-domain@0
genpdspec->np->name ---> power-domain
genpdspec->np->full_name ---> power-domain@1
provider->node->full_name & genpdspec->np->full_name - never matches.
After that, I debug i.mx6-DL , & see:
provider->node->name ---> power-domain
provider->node->full_name ---> power-domain@1
genpdspec->np->name ---> power-domain
genpdspec->np->full_name ---> power-domain@1
provider->node->full_name & genpdspec->np->full_name - matches. It works perfectly .
After that, I debug i.mx6-Solo ( Custom board ) , with Kernel 4.1.15 ( Yocto 2.0 / 2.1 / 2.2 )
provider->node->name ---> gpc
provider->node->full_name ---> /soc/aips-bus@02000000/gpc@020dc000
genpdspec->np->name ---> gpc
genpdspec->np->full_name ---> /soc/aips-bus@02000000/gpc@020dc000
provider->node->full_name & genpdspec->np->full_name - matches. It works perfectly .
The difference between the boards is minimal ( i.mx6-Solo & i.mx6-DL ). Please see 2 *.dtsi file.
Important :
I use 2 identical Image ( Yocto 2.5 / 2.6 / 2.7 / 2.8 / 2.9 / 3.0 ) , on EVB-i.mx6-DL - "galcore" it works perfectly , on Custom board i.mx6-Solo "galcore" - do not work..
In file imx6qdl.dtsi , I see node "gpc" , with power-domain@0 & power-domain@1 , maybe here a problem ?
gpc: gpc@20dc000 {
compatible = "fsl,imx6q-gpc";
reg = <0x020dc000 0x4000>;
interrupt-controller;
#interrupt-cells = <3>;
interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
<0 90 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&intc>;
clocks = <&clks IMX6QDL_CLK_IPG>;
clock-names = "ipg";
pgc {
#address-cells = <1>;
#size-cells = <0>;
power-domain@0 {
reg = <1>; /*0*/
#power-domain-cells = <0>;
};
pd_pu: power-domain@1 {
reg = <1>;
#power-domain-cells = <0>;
power-supply = <®_pu>;
clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
<&clks IMX6QDL_CLK_GPU3D_SHADER>,
<&clks IMX6QDL_CLK_GPU2D_CORE>,
<&clks IMX6QDL_CLK_GPU2D_AXI>,
<&clks IMX6QDL_CLK_OPENVG_AXI>,
<&clks IMX6QDL_CLK_VPU_AXI>;
};
};
};
I hope to help.
Hi,
I had the same problem and also debugged it down to the power-domain issue (thanks to you I knew to look there!). I have solved it, at least in my use case.
In short: I enabled CONFIG_I2C_MUX. CONFIG_I2C_MUX_GPIO is the key here.
I found out that the pfuze100-regulator driver (of the pfuze100-regulator on i.MX6) was not probed. This driver is needed in order to probe the power-domain@1. It supplies the vddpu (among others) which is the supply for pd_pu: power-domain@1.
I found out that the pfuze100-regulator is attached to the I2C bus, as described in arch/arm/boot/dts/imx6qdl-qmx6.dtsi. In the device tree, this is under i2cmux, which is controlled by i2c-mux-gpio. I noticed that i2c-mux-gpio driver was not probed either, and in fact, not even in the kernel config!
It was in my defconfig, however it never ended up in the final config because it depends on a "parent" driver, i2c-mux. Once I enabled CONFIG_I2C_MUX, galcore started working.
I hope this helps (at least someone)!
I have the same problem, my custom board is i.MX 6Quad and my OS is yocto 3.1 Zeus(kernel 5.4.47).
CONFIG_I2C_MUX & CONFIG_I2C_MUX_GPIO in my kernel config have been enabled already.
By the way, the VPU driver doesn't work, too.
And I test yocto 2.4 rock (kernel 4.9.88) in my board, the GPU & VPU driver is work well.
Hi!
It seems that I have reproduced this same issue of power-domain mismatch with galcore on an i.MX6 Dual (on a different board). Any idea what the exact issue in the device tree (or elsewhere) was?
Best regards,
Matias Larsson
Hello Alex,
Sorry and yes the issue is on DTBs.
Regards
Hello Bio,
I have the same problem, my custom board is i.MX 6Quad and my OS is yocto 3.1 Zeus(kernel 5.4.47).
Could you tell my how to modify the dts to fix the issue?
Hi!
It seems that I have reproduced this same issue of power-domain mismatch with galcore on an i.MX6 Dual. Any idea what the exact issue in the device tree or elsewhere was?
Best regards,
Matias Larsson
I solved this, see my other comment on this thread.
I want to add to my message that this is a different board though. Kernel version is 5.4.