Re: [Patch] dwc_eth_qos: Revert regression handling fixed phy

2024-04-17 Thread Elmar Psilog



On 4/17/24 13:15, Marek Vasut wrote:

On 4/17/24 10:41 AM, Nicole Battenfeld wrote:

Subject: [PATCH] dwc_eth_qos: Revert regression handling fixed phy

In imx8mp operation on eqos with fixed phy I get without that patch:
ERROR: no/invalid 

Which commit is being reverted here ?


True. I just checked the mails last year and my confusion grows.

It was right here at the bottom:
https://lists.denx.de/pipermail/u-boot/2023-February/509156.html

But already in PATCH_v2 it seems that line was dropped, my fault.




Re: [PATCH v3] Let the EQoS in imx8mp handle fixed-phy too.

2023-03-19 Thread Elmar Psilog


Am 19.03.23 um 18:21 schrieb Marek Vasut:

On 3/19/23 11:43, Elmar Psilog wrote:

Without that patch it lost track to the node to scan
speed and duplex.
Patch was created by Marek Vasut, just tested by me.

Signed-off-by: Elmar Psilog 
Reviewed-by: Marek Vasut 
---
   changes v2: fix format issues
   changes v3: remove {} around single if, add reviewd..

  drivers/net/dwc_eth_qos.c | 18 +++---
  1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 112deb546d..b9de205b8a 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -788,9 +788,21 @@ static int eqos_start(struct udevice *dev)
   */
  if (!eqos->phy) {
  int addr = -1;
-    addr = eqos_get_phy_addr(eqos, dev);
-    eqos->phy = phy_connect(eqos->mii, addr, dev,
-    eqos->config->interface(dev));
+    ofnode fixed_node;
+
+    if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+    fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+ "fixed-link");
+    if (ofnode_valid(fixed_node))
+    eqos->phy = fixed_phy_create(dev_ofnode(dev));
+    }
+
+    if (!eqos->phy) {
+    addr = eqos_get_phy_addr(eqos, dev);
+    eqos->phy = phy_connect(eqos->mii, addr, dev,
+    eqos->config->interface(dev));
+    }
+
  if (!eqos->phy) {
  pr_err("phy_connect() failed");
  goto err_stop_resets;
--
2.34.1



I would give a short reminder about the patch. Reviewed by Marek, ok for
Ramon. Would be glad to see it in 2023.04.


We're already in 2023.04-rc4 , this is material for v2023.07 , i.e. 
for u-boot/next branch .


Ok, but does it change anything for the patch itself? As source isn't 
touched in last weeks it is still needed. Other way asked: Any action 
(from my side) needed? I just afraid your (@Marek) and my work gets 
lost. I would expect either an "accepted" or "rejected" (for a reason).




Re: [PATCH v3] Let the EQoS in imx8mp handle fixed-phy too.

2023-03-19 Thread Elmar Psilog

Without that patch it lost track to the node to scan
speed and duplex.
Patch was created by Marek Vasut, just tested by me.

Signed-off-by: Elmar Psilog 
Reviewed-by: Marek Vasut 
---
   changes v2: fix format issues
   changes v3: remove {} around single if, add reviewd..

  drivers/net/dwc_eth_qos.c | 18 +++---
  1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 112deb546d..b9de205b8a 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -788,9 +788,21 @@ static int eqos_start(struct udevice *dev)
 */
if (!eqos->phy) {
int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
-   eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+"fixed-link");
+   if (ofnode_valid(fixed_node))
+   eqos->phy = fixed_phy_create(dev_ofnode(dev));
+   }
+
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
+   eqos->config->interface(dev));
+   }
+
if (!eqos->phy) {
pr_err("phy_connect() failed");
goto err_stop_resets;
--
2.34.1



I would give a short reminder about the patch. Reviewed by Marek, ok for
Ramon. Would be glad to see it in 2023.04.

Thanks

Elmar



[PATCH v3] Let the EQoS in imx8mp handle fixed-phy too.

2023-02-20 Thread Elmar Psilog
Without that patch it lost track to the node to scan
speed and duplex.
Patch was created by Marek Vasut, just tested by me.

Signed-off-by: Elmar Psilog 
Reviewed-by: Marek Vasut 
---
  changes v2: fix format issues
  changes v3: remove {} around single if, add reviewd..

 drivers/net/dwc_eth_qos.c | 18 +++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 112deb546d..b9de205b8a 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -788,9 +788,21 @@ static int eqos_start(struct udevice *dev)
 */
if (!eqos->phy) {
int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
-   eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+"fixed-link");
+   if (ofnode_valid(fixed_node))
+   eqos->phy = fixed_phy_create(dev_ofnode(dev));
+   }
+
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
+   eqos->config->interface(dev));
+   }
+
if (!eqos->phy) {
pr_err("phy_connect() failed");
goto err_stop_resets;
--
2.34.1



[PATCH v2] Let the EQoS in imx8mp handle fixed-phy too.

2023-02-19 Thread Elmar Psilog
Without that patch it lost track to the node to scan
speed and duplex.
Patch was created by Marek Vasut, just tested by me.

Signed-off-by: Elmar Psilog 
---
 changes v2: fix format issues

 drivers/net/dwc_eth_qos.c | 19 ---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 112deb546d..ff638b0f1e 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -788,9 +788,22 @@ static int eqos_start(struct udevice *dev)
 */
if (!eqos->phy) {
int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
-   eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+"fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy = fixed_phy_create(dev_ofnode(dev));
+   }
+   }
+
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
+   eqos->config->interface(dev));
+   }
+
if (!eqos->phy) {
pr_err("phy_connect() failed");
goto err_stop_resets;
--
2.34.1



[Patch] net: dwc_eth_qos - works with fixed-phy

2023-02-15 Thread Elmar Psilog

Let the EQoS in imx8mp handle fixed-phy too.
Without that patch it lost track to the node to scan
speed and duplex.
Patch was created by Marek Vasut, just tested by me.

Signed-off-by: Elmar Psilog 
---
drivers/net/dwc_eth_qos.c
1 file changed

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index afc47b56ff..10915d8e47 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -785,9 +785,21 @@ static int eqos_start(struct udevice *dev)
 */
if (!eqos->phy) {
int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
- eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+   "fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy =
fixed_phy_create(dev_ofnode(dev));
+   eqos->phy_of_node = fixed_node;
+   }
+   }
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
eqos->config->interface(dev));
+   }
+
if (!eqos->phy) {
pr_err("phy_connect() failed");
goto err_stop_resets;


Re: imx8mp EQOS regression in dwc_eth_qos,c

2023-02-14 Thread Elmar Psilog

Am 15.02.23 um 01:19 schrieb Marek Vasut:

On 2/14/23 18:31, Elmar Psilog wrote:

Am 13.02.23 um 22:20 schrieb Marek Vasut:


On 2/13/23 22:04, Fabio Estevam wrote:

Adding Marek, who has sent some EQOS patches recently.

On Mon, Feb 13, 2023 at 6:02 PM Elmar Psilog  wrote:


Hello,
Think I found a regression in EQOS driver with fixed-phy. Maybe 
someone
with a imx8mp board might check that use case to confirm? That 
would be

great.
While ethernet was working in v2022.04 a "ping" in v2023.01 returns

ERROR: no/invalid  property!
invalid speed 0 eqos_adjust_link() failed: -22 FAILED

although devicetree/hardware kept unchanged.
This happens because in file fixed.c in in function fixedphy_config()
the call

  val = ofnode_read_u32_default(node, "speed", 0);

returns 0 instead of 1000 and also the duplex is not set. Found 
that  in

file/function dwc_eth_qos.c / eqos_start() the line

eqos->phy->node = eqos->phy_of_node;

is responsible for losing the information. Don't know what magic 
happens
here - so I can't fix it - I just followed the data. So all works 
well
and even the parsing of old and new fixed-link devicetree works 
til that
line. After that I don't get speed anymore. Maybe you can have a 
look at

this?


Try this patch (needs CONFIG_FIXED_PHY=y) :

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index d488bd0c288..592af53b352 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -791,9 +791,21 @@ static int eqos_start(struct udevice *dev)
 */
    if (!eqos->phy) {
    int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
- eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = 
ofnode_find_subnode(dev_ofnode(dev),

+ "fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy = 
fixed_phy_create(dev_ofnode(dev));

+   }
+
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
+ eqos->config->interface(dev));
+   }
+
    if (!eqos->phy) {
    pr_err("phy_connect() failed");
    goto err_stop_resets;


Thanks Fabio for forwarding and Marek for the quick patch! Don't get 
this exactly.
Bit confused about the closing "}"  in if(IS_ENABLED) seems to be 
missed (or an else path)?

Where exactly should this be? From the insertion it looks like you mean:


Yes, the { shouldn't be at the end of 'if (ofnode_valid(fixed_node)) {' .


+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = 
ofnode_find_subnode(dev_ofnode(dev),

+   "fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy = 
fixed_phy_create(dev_ofnode(dev));


Add this here (*) too (see below):

eqos->phy_of_node = fixed_node;


+   }


This works too.


+   }
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev, 
eqos->config->interface(dev));

+   }


But that doesn't solve the issue. The magic line

eqos->phy->node = eqos->phy_of_node;

will still executed.


See (*) above , does that help ?

Likely a different issue but connected to EQOS: I am wondering why 
the clocks for ethernet look so much different if FEC is not 
configured. Shouldn't be the case, right? At least imx8mp.dtsi 
doesn't tell about any 24MHz clock. Also counter is "0"? Well, EQOS 
works with uncommenting the line above and this clock, but why?


Each device is probed on first use, so the clock are left unconfigured 
until the device is actually used (e.g. for ethernet transfer). Note 
that there is a huge series which overhauls the EQoS and FEC clock on 
the ML, see:


[PATCH v3 01/14] clk: imx8mp: Add EQoS MAC clock
Marek, great! Can confirm that this patch (just to be sure attached 
complete below) does it's job.


My concern with the clock is, that what is done in u-boot seems to have 
an effect in linux/kernel too. Not all clocks seems to be reconfigured 
in kernel. I'll try the upcoming 2023.04 release next.


Again, big thanks.

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index afc47b56ff..10915d8e47 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -785,9 +785,21 @@ static int eqos_start(struct udevice *dev)
 */
    if (!eqos->phy) {

Re: imx8mp EQOS regression in dwc_eth_qos,c

2023-02-14 Thread Elmar Psilog

Am 13.02.23 um 22:20 schrieb Marek Vasut:


On 2/13/23 22:04, Fabio Estevam wrote:

Adding Marek, who has sent some EQOS patches recently.

On Mon, Feb 13, 2023 at 6:02 PM Elmar Psilog  wrote:


Hello,
Think I found a regression in EQOS driver with fixed-phy. Maybe someone
with a imx8mp board might check that use case to confirm? That would be
great.
While ethernet was working in v2022.04 a "ping" in v2023.01 returns

ERROR: no/invalid  property!
invalid speed 0 eqos_adjust_link() failed: -22 FAILED

although devicetree/hardware kept unchanged.
This happens because in file fixed.c in in function fixedphy_config()
the call

  val = ofnode_read_u32_default(node, "speed", 0);

returns 0 instead of 1000 and also the duplex is not set. Found 
that  in

file/function dwc_eth_qos.c / eqos_start() the line

eqos->phy->node = eqos->phy_of_node;

is responsible for losing the information. Don't know what magic 
happens

here - so I can't fix it - I just followed the data. So all works well
and even the parsing of old and new fixed-link devicetree works til 
that
line. After that I don't get speed anymore. Maybe you can have a 
look at

this?


Try this patch (needs CONFIG_FIXED_PHY=y) :

diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index d488bd0c288..592af53b352 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -791,9 +791,21 @@ static int eqos_start(struct udevice *dev)
 */
    if (!eqos->phy) {
    int addr = -1;
-   addr = eqos_get_phy_addr(eqos, dev);
-   eqos->phy = phy_connect(eqos->mii, addr, dev,
- eqos->config->interface(dev));
+   ofnode fixed_node;
+
+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+ "fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy = 
fixed_phy_create(dev_ofnode(dev));

+   }
+
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev,
+ eqos->config->interface(dev));
+   }
+
    if (!eqos->phy) {
    pr_err("phy_connect() failed");
    goto err_stop_resets;


Thanks Fabio for forwarding and Marek for the quick patch! Don't get 
this exactly.
Bit confused about the closing "}"  in if(IS_ENABLED) seems to be missed 
(or an else path)?

Where exactly should this be? From the insertion it looks like you mean:

+   if (IS_ENABLED(CONFIG_PHY_FIXED)) {
+   fixed_node = ofnode_find_subnode(dev_ofnode(dev),
+   "fixed-link");
+   if (ofnode_valid(fixed_node)) {
+   eqos->phy = 
fixed_phy_create(dev_ofnode(dev));

+   }
+   }
+   if (!eqos->phy) {
+   addr = eqos_get_phy_addr(eqos, dev);
+   eqos->phy = phy_connect(eqos->mii, addr, dev, 
eqos->config->interface(dev));

+   }


But that doesn't solve the issue. The magic line

eqos->phy->node = eqos->phy_of_node;

will still executed.

Likely a different issue but connected to EQOS: I am wondering why the 
clocks for ethernet look so much different if FEC is not configured. 
Shouldn't be the case, right? At least imx8mp.dtsi doesn't tell about 
any 24MHz clock. Also counter is "0"? Well, EQOS works with uncommenting 
the line above and this clock, but why?


clk_dump returns on NXP EVK board with FEC configured:

2    1    | |   |-- sys_pll1_266m
2    0    |   |   |   |-- nand_usdhc_bus
2    4    |   |   |   `-- enet_axi
2    2    |   |   |   |-- enet1_root_clk
2    2    |   |   |   `-- 
sim_enet_root_clk

...
10   1    |   |   `-- sys_pll2_bypass
10   3    |   |   `-- sys_pll2_out
  5000 2    |   |   |-- sys_pll2_50m
  5000 2    |   |   |   `-- enet_phy_ref
 1    2    |   |   |-- sys_pll2_100m
 1    2    |   |   |   `-- enet_timer
 12500    2    |   |   |-- sys_pll2_125m
 12500    2    |   |   |   `-- enet_ref
 1    0    |   |   |-- sys_pll2_166m

and without FEC configured:

2400 0    |   |-- enet_axi
2400 0    |   |   |-- enet1_root_clk
2400 0    |  

imx8mp EQOS regression in dwc_eth_qos,c

2023-02-13 Thread Elmar Psilog

Hello,
Think I found a regression in EQOS driver with fixed-phy. Maybe someone
with a imx8mp board might check that use case to confirm? That would be
great.
While ethernet was working in v2022.04 a "ping" in v2023.01 returns

ERROR: no/invalid  property!
invalid speed 0 eqos_adjust_link() failed: -22 FAILED

although devicetree/hardware kept unchanged.
This happens because in file fixed.c in in function fixedphy_config()
the call

val = ofnode_read_u32_default(node, "speed", 0);

returns 0 instead of 1000 and also the duplex is not set. Found that  in
file/function dwc_eth_qos.c / eqos_start() the line

eqos->phy->node = eqos->phy_of_node;

is responsible for losing the information. Don't know what magic happens
here - so I can't fix it - I just followed the data. So all works well
and even the parsing of old and new fixed-link devicetree works til that
line. After that I don't get speed anymore. Maybe you can have a look at
this?

Thank you and best regards,
Elmar


DTS should be correct
&eqos {
  pinctrl-names = "default";
  pinctrl-0 = <&pinctrl_eqos>;
  phy-mode = "rgmii-id";
  status = "okay";

  // fixed-link = <0 1 1000 0 0>; // old - just for test
  fixed-link {
speed = <1000>;
full-duplex;
  };
};


Re: imx8mp spi fail

2023-02-13 Thread Elmar Psilog

Thank you so much, you made my day! Sorry, I didn't see the alias was
used different.

Although my credibility gambled away I think I found a real bug in EQOS
driver with fixed-phy:

In file fixed.c in in function fixedphy_config() the call

    val = ofnode_read_u32_default(node, "speed", 0);

returns 0 instead of 1000 and also the duplex is not set. I found that 
in file/function dwc_eth_qos.c / eqos_start() the line

eqos->phy->node = eqos->phy_of_node;

is reponsible for losing the info. Don't know what magic happens here -
so I can't fix it - just followed the data. So all works well and even
the parsing of old and new fixed-link devicetree works til that line.
After that I don't get speed anymore. Can someone please confirm?

Best regards,

Elmar

Am 13.02.23 um 00:38 schrieb Fabio Estevam:

Hi Elmar,

On Sun, Feb 12, 2023 at 3:04 PM Elmar Psilog  wrote:

Hello, kindly ask for help about SPI at an IMX8MP. I tried latest
2023.01. If you can please have a look and check it works on your side?

sspi command returns: Invalid bus 0

Could you try passing an aliases entry in your dts like this?

aliases {
 spi0 = &ecspi1;
};

Does this help?


What am I doing wrong or is this a bug? Thanks ahead for any hint.
dt: (tested with both types of cs-gpios)
&ecspi1 {
  pinctrl-names = "default";
  pinctrl-0 = <&pinctrl_ecspi1>;
  cs-gpios = <0>, <&gpio5 9 GPIO_ACTIVE_LOW>;
//  cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;

This last format is the correct one.


imx8mp spi fail

2023-02-12 Thread Elmar Psilog

Hello, kindly ask for help about SPI at an IMX8MP. I tried latest
2023.01. If you can please have a look and check it works on your side?

sspi command returns: Invalid bus 0

Turning on the log-level:

drivers/core/lists.c:201-  lists_bind_fdt() bind node spi@3082
drivers/core/lists.c:222-  lists_bind_fdt()- attempt to match
compatible string 'fsl,imx8mp-ecspi'
drivers/core/lists.c:222-  lists_bind_fdt()- attempt to match
compatible string 'fsl,imx51-ecspi'
drivers/core/lists.c:250-  lists_bind_fdt()- found match at
'mxc_spi': 'fsl,imx51-ecspi' matches 'fsl,imx51-ecspi'

u-boot=> sspi
drivers/core/uclass.c:338-uclass_find_device_by_seq() 0
drivers/core/uclass.c:346-uclass_find_device_by_seq()- 1 'spi@3082'
drivers/core/uclass.c:353-uclass_find_device_by_seq()- not found
drivers/spi/spi-uclass.c:431- _spi_get_bus_and_cs() Invalid bus 0 (err=-19)

What am I doing wrong or is this a bug? Thanks ahead for any hint.

Best regards,
Elmar



---

Pretty sure my config and devicetree is not wrong as long there are no
changes about in last few month. I attache it below.

my config file:
CONFIG_SPL_DM_SPI=y
CONFIG_CMD_SPI=y
CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_MXC_SPI=y

dt: (tested with both types of cs-gpios)
&ecspi1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>;
cs-gpios = <0>, <&gpio5 9 GPIO_ACTIVE_LOW>;
//  cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
status = "okay";
};

pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x0104
MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x0104
MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x0104
MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x0104
>;
};



[u-boot] SPI imx8mp problem

2023-02-06 Thread Elmar Psilog

Hello,
do have some problems with SPI at an IMX8MP. I tried latest 2023.01.

I have a device attached to SPI, that needs to be configured with an
SSPI command at u-boot level. Please help me debug that, I am clueless.

sspi command returns: Invalid bus 0

my config file:
CONFIG_SPL_DM_SPI=y
CONFIG_CMD_SPI=y
CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_MXC_SPI=y

dt: (tested with both types of cs-gpios)
&ecspi1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>;
cs-gpios = <0>, <&gpio5 9 GPIO_ACTIVE_LOW>;
//  cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
status = "okay";
};

pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x0104
MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x0104
MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x0104
MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x0104
>;
};


Turning on the log-level:

drivers/core/lists.c:201-  lists_bind_fdt() bind node spi@3082
drivers/core/lists.c:222-  lists_bind_fdt()- attempt to match
compatible string 'fsl,imx8mp-ecspi'
drivers/core/lists.c:222-  lists_bind_fdt()- attempt to match
compatible string 'fsl,imx51-ecspi'
drivers/core/lists.c:250-  lists_bind_fdt()- found match at
'mxc_spi': 'fsl,imx51-ecspi' matches 'fsl,imx51-ecspi'

u-boot=> sspi
drivers/core/uclass.c:338-uclass_find_device_by_seq() 0
drivers/core/uclass.c:346-uclass_find_device_by_seq()- 1 'spi@3082'
drivers/core/uclass.c:353-uclass_find_device_by_seq()- not found
drivers/spi/spi-uclass.c:431- _spi_get_bus_and_cs() Invalid bus 0 (err=-19)

What am I doing wrong or is this a bug? Thanks ahead for any hint.

Best regards,
Elmar

PS: Got SPI working at v2022.04 but an other issues occur, not sure how
severe it is. At v2022.04 the SPI command is send, but at very first
call I get "Enable clock-controller@3038 failed".


Re: get file via tftp and write to filesystem, get length of tftp transfer

2021-12-01 Thread Elmar Psilog




On Tue, Nov 30, 2021 at 07:51:28AM +0100, Elmar Psilog wrote:


Hello, is it possible to download a file via network (tftp) and write it
to a filesystem as ext4? This looks like a combination of
tftpboot and ext4write but how to get sizebytes?
I don't find how to get the length information from tftpboot into a
variable - it seems to me only displayed on screen. Did I miss something?

The filesize environment variable is almost always set when we "read"
something from a source, including tftp.


Thanks Tom! How could I miss that?

Writing ext4 only works if it was formatted with -O ^metadata_csum.

Best regards, Elmar



get file via tftp and write to filesystem, get length of tftp transfer

2021-11-30 Thread Elmar Psilog

Hello, is it possible to download a file via network (tftp) and write it
to a filesystem as ext4? This looks like a combination of
tftpboot and ext4write but how to get sizebytes?
I don't find how to get the length information from tftpboot into a
variable - it seems to me only displayed on screen. Did I miss something?
Thanks for you patience.
Elmar



Re: imx8mp evk - boot stucks at BL31

2021-01-21 Thread Elmar Psilog




On 21.01.21 07:37, Elmar Psilog wrote:

I am on a imx8.mp evk board. I could build and start loader (SPL, UBOOT,
DT, ATF/BL31, mkimage) from the freescale git. Due to some problems I
switched to mainland Uboot 2021-1. I found SPL/ATF is booting, but it
stops with:

NOTICE: BL31: 

If I replace in imx-mkimage just the file u-boot-nodtb.bin with NXP's
uboot, than it boots (it shows the U-Boot-2020.04 banner). So something
went wrong with 2021-1 uboot or its default config. What can this be? I
enabled log level 7, but nothing to be seen.

(BTW: When enables loglevel >6 for SPL, SPL fails in DDR training. In
NXP 20.04 SPL I couldn't compile with SPL log support)


On Denx-Git I found Uboot boots imx8mp-evk with 2020.07, but not with
2020.10 - even not first RC).


imx8mp evk - boot stucks at BL31

2021-01-21 Thread Elmar Psilog

I am on a imx8.mp evk board. I could build and start loader (SPL, UBOOT,
DT, ATF/BL31, mkimage) from the freescale git. Due to some problems I
switched to mainland Uboot 2021-1. I found SPL/ATF is booting, but it
stops with:

NOTICE: BL31: 

If I replace in imx-mkimage just the file u-boot-nodtb.bin with NXP's
uboot, than it boots (it shows the U-Boot-2020.04 banner). So something
went wrong with 2021-1 uboot or its default config. What can this be? I
enabled log level 7, but nothing to be seen.

(BTW: When enables loglevel >6 for SPL, SPL fails in DDR training. In
NXP 20.04 SPL I couldn't compile with SPL log support)