AnsweredAssumed Answered

Problem with galcore  ( GPU module ) on imx6-Solo

Question asked by Alex Berenshtein on May 6, 2020
Latest reply on May 12, 2020 by Alex Berenshtein

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 = <&reg_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.

Outcomes