Problem with galcore ( GPU module ) on imx6-Solo

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Problem with galcore ( GPU module ) on imx6-Solo

3,417件の閲覧回数
alexberenshtein
Contributor III

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.

ラベル(2)
9 返答(返信)

3,095件の閲覧回数
matias-larsson-tritech
Contributor I

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)!

0 件の賞賛
返信

2,898件の閲覧回数
zohanlin
Contributor IV

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.

0 件の賞賛
返信

3,220件の閲覧回数
alexberenshtein
Contributor III

Hi.

Thank to replay.

Did you explain to say where the problem is?

I do not understand where the problem . 

If possible, please watch these dtsi - files , this is the minimum difference.

Best Regards.

0 件の賞賛
返信

3,123件の閲覧回数
matias-larsson-tritech
Contributor I

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

0 件の賞賛
返信

3,220件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello Alex,

Sorry and yes the issue is on DTBs.

Regards

0 件の賞賛
返信

2,900件の閲覧回数
zohanlin
Contributor IV

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?

0 件の賞賛
返信

3,126件の閲覧回数
matias-larsson-tritech
Contributor I

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

0 件の賞賛
返信

3,094件の閲覧回数
matias-larsson-tritech
Contributor I

I solved this, see my other comment on this thread.

0 件の賞賛
返信

3,124件の閲覧回数
matias-larsson-tritech
Contributor I

I want to add to my message that this is a different board though. Kernel version is 5.4.

0 件の賞賛
返信