Skip to contentSkip to conversation

SolutionEngine771x: fix Ether platform data

PATCH In review Sergei Shtylyov 1 participant 2 messages Jan 3, 2018 – Jan 6, 2018

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 SolutionEngine771x: fix Ether platform data

The 'sh_eth' driver's probe() method would fail on the SolutionEngine7710 board and crash on SolutionEngine7712 board as the platform code is hopelessly behind the driver's platform data -- it passes the PHY address instead of 'struct sh_eth_plat_data *'; pass the latter to the driver in order to fix the bug...

Fixes 71557a37adb5 ("[netdrvr] sh_eth: Add SH7619 support")

---
The patch is against Paul Mundt's 'linux-sh.git' repo, 'sh-latest' branch.

 arch/sh/boards/mach-se/770x/setup.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Index: linux/arch/sh/boards/mach-se/770x/setup.c =================================--- linux.orig/arch/sh/boards/mach-se/770x/setup.c +++ linux/arch/sh/boards/mach-se/770x/setup.c
@@ -115,6 +115,11 @@ static struct platform_device heartbeat_
#if defined(CONFIG_CPU_SUBTYPE_SH7710) ||\
defined(CONFIG_CPU_SUBTYPE_SH7712)
/* SH771X Ethernet driver */
+static struct sh_eth_plat_data sh_eth_plat = {
+ .phy = PHY_ID,
+ .phy_interface = PHY_INTERFACE_MODE_MII,
+};
+
static struct resource sh_eth0_resources[] = {
[0] = {
.start = SH_ETH0_BASE,
@@ -132,7 +137,7 @@ static struct platform_device sh_eth0_de
.name = "sh771x-ether",
.id = 0,
.dev = {
- .platform_data = PHY_ID,
+ .platform_data = &sh_eth_plat,
},
.num_resources = ARRAY_SIZE(sh_eth0_resources),
.resource = sh_eth0_resources,
@@ -155,7 +160,7 @@ static struct platform_device sh_eth1_de
.name = "sh771x-ether",
.id = 1,
.dev = {
- .platform_data = PHY_ID,
+ .platform_data = &sh_eth_plat,
},
.num_resources = ARRAY_SIZE(sh_eth1_resources),
.resource = sh_eth1_resources,

#1 lore raw

Hello!

Quoted 8 lines · Sergei Shtylyov

The 'sh_eth' driver's probe() method would fail on the SolutionEngine7710 board and crash on SolutionEngine7712 board as the platform code is hopelessly behind the driver's platform data -- it passes the PHY address instead of 'struct sh_eth_plat_data *'; pass the latter to the driver in order to fix the bug...

Fixes 71557a37adb5 ("[netdrvr] sh_eth: Add SH7619 support")

[...]

Now that I was finally able to build an SH kernel, I realized that I
forgot to add #include <linux/sh_eth.h>... :-/

MBR, Sergei