[PATCH net v3 0/4] fsl/fman: fixes for ARM
STALE3535d
Revision v3 of 4 in this series.
7 messages,
2 authors,
2016-12-19 · open the first message on its own page
The patch set fixes advertised speeds for QSGMII interfaces, disables
A007273 erratum workaround on non-PowerPC platforms where it does not
apply, enables compilation on ARM64 and addresses a probing issue on
non PPC platforms.
Changes from v2: merged fsl/fman changes to avoid a point of failure
Changes from v1: unifying probing on all supported platforms
Madalin Bucur (4):
fsl/fman: fix 1G support for QSGMII interfaces
powerpc: fsl/fman: remove fsl,fman from of_device_ids[]
fsl/fman: A007273 only applies to PPC SoCs
fsl/fman: enable compilation on ARM64
arch/powerpc/platforms/85xx/corenet_generic.c | 3 ---
drivers/net/ethernet/freescale/fman/Kconfig | 2 +-
drivers/net/ethernet/freescale/fman/fman.c | 16 ++++++++++++++++
drivers/net/ethernet/freescale/fman/mac.c | 1 +
4 files changed, 18 insertions(+), 4 deletions(-)
--
2.1.0
QSGMII ports were not advertising 1G speed.
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
Reviewed-by: Camelia Groza <redacted>
---
drivers/net/ethernet/freescale/fman/mac.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/freescale/fman/mac.c b/drivers/net/ethernet/freescale/fman/mac.c
index 69ca42c..0b31f85 100644
--- a/drivers/net/ethernet/freescale/fman/mac.c
+++ b/drivers/net/ethernet/freescale/fman/mac.c @@ -594,6 +594,7 @@ static const u16 phy2speed[] = {
[ PHY_INTERFACE_MODE_RGMII_RXID ] = SPEED_1000 ,
[ PHY_INTERFACE_MODE_RGMII_TXID ] = SPEED_1000 ,
[ PHY_INTERFACE_MODE_RTBI ] = SPEED_1000 ,
+ [ PHY_INTERFACE_MODE_QSGMII ] = SPEED_1000 ,
[ PHY_INTERFACE_MODE_XGMII ] = SPEED_10000
};
--
2.1.0
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
Reviewed-by: Camelia Groza <redacted>
---
drivers/net/ethernet/freescale/fman/fman.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c
index 0b7f711..003b86d 100644
--- a/drivers/net/ethernet/freescale/fman/fman.c
+++ b/drivers/net/ethernet/freescale/fman/fman.c @@ -1890,6 +1890,7 @@ static int fman_reset(struct fman *fman)
goto _return ;
} else {
+ #ifdef CONFIG_PPC
struct device_node * guts_node ;
struct ccsr_guts __iomem * guts_regs ;
u32 devdisr2 , reg ; @@ -1921,6 +1922,7 @@ static int fman_reset(struct fman *fman)
/* Enable all MACs */
iowrite32be ( reg , & guts_regs -> devdisr2 );
+ #endif
/* Perform FMan reset */
iowrite32be ( FPM_RSTC_FM_RESET , & fman -> fpm_regs -> fm_rstc ); @@ -1932,25 +1934,31 @@ static int fman_reset(struct fman *fman)
} while ((( ioread32be ( & fman -> fpm_regs -> fm_rstc )) &
FPM_RSTC_FM_RESET ) && -- count );
if ( count == 0 ) {
+ #ifdef CONFIG_PPC
iounmap ( guts_regs );
of_node_put ( guts_node );
+ #endif
err = - EBUSY ;
goto _return ;
}
+ #ifdef CONFIG_PPC
/* Restore devdisr2 value */
iowrite32be ( devdisr2 , & guts_regs -> devdisr2 );
iounmap ( guts_regs );
of_node_put ( guts_node );
+ #endif
goto _return ;
+ #ifdef CONFIG_PPC
guts_regs :
of_node_put ( guts_node );
guts_node :
dev_dbg ( fman -> dev , "%s: Didn't perform FManV3 reset due to Errata A007273! \n " ,
__func__ );
+ #endif
}
_return :
return err ; --
2.1.0
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
---
drivers/net/ethernet/freescale/fman/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/fman/Kconfig b/drivers/net/ethernet/freescale/fman/Kconfig
index 79b7c84..dc0850b 100644
--- a/drivers/net/ethernet/freescale/fman/Kconfig
+++ b/drivers/net/ethernet/freescale/fman/Kconfig @@ -1,6 +1,6 @@
config FSL_FMAN
tristate "FMan support"
- depends on FSL_SOC || COMPILE_TEST
+ depends on FSL_SOC || ARCH_LAYERSCAPE || COMPILE_TEST
select GENERIC_ALLOCATOR
select PHYLIB
default n --
2.1.0
The fsl/fman drivers will use of_platform_populate() on all
supported platforms. Call of_platform_populate() to probe the
FMan sub-nodes.
Signed-off-by: Igal Liberman <redacted>
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
---
arch/powerpc/platforms/85xx/corenet_generic.c | 3 ---
drivers/net/ethernet/freescale/fman/fman.c | 8 ++++++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c b/arch/powerpc/platforms/85xx/corenet_generic.c
index 1179115..824b7f1 100644
--- a/arch/powerpc/platforms/85xx/corenet_generic.c
+++ b/arch/powerpc/platforms/85xx/corenet_generic.c @@ -117,9 +117,6 @@ static const struct of_device_id of_device_ids[] = {
{
. compatible = "fsl,qe" ,
},
- {
- . compatible = "fsl,fman" ,
- },
/* The following two are for the Freescale hypervisor */
{
. name = "hypervisor" , diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c
index dafd9e1..0b7f711 100644
--- a/drivers/net/ethernet/freescale/fman/fman.c
+++ b/drivers/net/ethernet/freescale/fman/fman.c @@ -2868,6 +2868,14 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
fman -> dev = & of_dev -> dev ;
+ /* call of_platform_populate in order to probe sub-nodes on arm64 */
+ err = of_platform_populate ( fm_node , NULL , NULL , & of_dev -> dev );
+ if ( err ) {
+ dev_err ( & of_dev -> dev , "%s: of_platform_populate() failed \n " ,
+ __func__ );
+ goto fman_free ;
+ }
+
return fman ;
fman_node_put : --
2.1.0
On Mon, 2016-12-19 at 18:13 +0200, Madalin Bucur wrote: quoted hunk The fsl/fman drivers will use of_platform_populate() on all
supported platforms. Call of_platform_populate() to probe the
FMan sub-nodes.
Signed-off-by: Igal Liberman <redacted>
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
---
arch/powerpc/platforms/85xx/corenet_generic.c | 3 ---
drivers/net/ethernet/freescale/fman/fman.c | 8 ++++++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c b/arch/powerpc/platforms/85xx/corenet_generic.c
index 1179115..824b7f1 100644 --- a/arch/powerpc/platforms/85xx/corenet_generic.c
+++ b/arch/powerpc/platforms/85xx/corenet_generic.c @@ -117,9 +117,6 @@ static const struct of_device_id of_device_ids[] = { {
.compatible = "fsl,qe",
},
- {
- .compatible = "fsl,fman",
- },
/* The following two are for the Freescale hypervisor */
{
.name = "hypervisor",
For this part:
Acked-by: Scott Wood <oss@buserror.net>
quoted hunk diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c
index dafd9e1..0b7f711 100644 --- a/drivers/net/ethernet/freescale/fman/fman.c
+++ b/drivers/net/ethernet/freescale/fman/fman.c @@ -2868,6 +2868,14 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
fman->dev = &of_dev->dev;
+ /* call of_platform_populate in order to probe sub-nodes on arm64
*/
+ err = of_platform_populate(fm_node, NULL, NULL, &of_dev->dev);
+ if (err) {
+ dev_err(&of_dev->dev, "%s: of_platform_populate()
failed\n",
+ __func__);
+ goto fman_free;
+ }
The "on arm64" comment is no longer accurate (and the rest of the comment
seems unnecessary).
-Scott
PiBGcm9tOiBTY290dCBXb29kIFttYWlsdG86b3NzQGJ1c2Vycm9yLm5ldF0NCj4gU2VudDogTW9u
ZGF5LCBEZWNlbWJlciAxOSwgMjAxNiA5OjQ2IFBNDQo+IA0KPiBPbiBNb24sIDIwMTYtMTItMTkg
YXQgMTg6MTMgKzAyMDAsIE1hZGFsaW4gQnVjdXIgd3JvdGU6DQo+ID4gVGhlIGZzbC9mbWFuIGRy
aXZlcnMgd2lsbCB1c2Ugb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKSBvbiBhbGwNCj4gPiBzdXBwb3J0
ZWQgcGxhdGZvcm1zLiBDYWxsIG9mX3BsYXRmb3JtX3BvcHVsYXRlKCkgdG8gcHJvYmUgdGhlDQo+
ID4gRk1hbiBzdWItbm9kZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBJZ2FsIExpYmVybWFu
IDxpZ2FsLmxpYmVybWFuQGZyZWVzY2FsZS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWFkYWxp
biBCdWN1ciA8bWFkYWxpbi5idWN1ckBueHAuY29tPg0KPiA+IC0tLQ0KPiA+IMKgYXJjaC9wb3dl
cnBjL3BsYXRmb3Jtcy84NXh4L2NvcmVuZXRfZ2VuZXJpYy5jIHwgMyAtLS0NCj4gPiDCoGRyaXZl
cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uY8KgwqDCoMKgfCA4ICsrKysrKysr
DQo+ID4gwqAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkN
Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvY29yZW5l
dF9nZW5lcmljLmMNCj4gPiBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9jb3JlbmV0X2dl
bmVyaWMuYw0KPiA+IGluZGV4IDExNzkxMTUuLjgyNGI3ZjEgMTAwNjQ0DQo+ID4gLS0tIGEvYXJj
aC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L2NvcmVuZXRfZ2VuZXJpYy5jDQo+ID4gKysrIGIvYXJj
aC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L2NvcmVuZXRfZ2VuZXJpYy5jDQo+ID4gQEAgLTExNyw5
ICsxMTcsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9kZXZpY2VfaWRz
W10gPSB7DQo+ID4gwqAJew0KPiA+IMKgCQkuY29tcGF0aWJsZQk9ICJmc2wscWUiLA0KPiA+IMKg
CX0sDQo+ID4gLQl7DQo+ID4gLQkJLmNvbXBhdGlibGXCoMKgwqDCoD0gImZzbCxmbWFuIiwNCj4g
PiAtCX0sDQo+ID4gwqAJLyogVGhlIGZvbGxvd2luZyB0d28gYXJlIGZvciB0aGUgRnJlZXNjYWxl
IGh5cGVydmlzb3IgKi8NCj4gPiDCoAl7DQo+ID4gwqAJCS5uYW1lCQk9ICJoeXBlcnZpc29yIiwN
Cj4gDQo+IEZvciB0aGlzIHBhcnQ6DQo+IA0KPiBBY2tlZC1ieTogU2NvdHQgV29vZCA8b3NzQGJ1
c2Vycm9yLm5ldD4NCg0KVGhhbmsgeW91LCBhZGRlZCB0byB2NC4NCg0KPiA+IGRpZmYgLS1naXQg
YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMNCj4gPiBiL2RyaXZl
cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYw0KPiA+IGluZGV4IGRhZmQ5ZTEu
LjBiN2Y3MTEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxl
L2ZtYW4vZm1hbi5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2Zt
YW4vZm1hbi5jDQo+ID4gQEAgLTI4NjgsNiArMjg2OCwxNCBAQCBzdGF0aWMgc3RydWN0IGZtYW4g
KnJlYWRfZHRzX25vZGUoc3RydWN0DQo+ID4gcGxhdGZvcm1fZGV2aWNlICpvZl9kZXYpDQo+ID4N
Cj4gPiDCoAlmbWFuLT5kZXYgPSAmb2ZfZGV2LT5kZXY7DQo+ID4NCj4gPiArCS8qIGNhbGwgb2Zf
cGxhdGZvcm1fcG9wdWxhdGUgaW4gb3JkZXIgdG8gcHJvYmUgc3ViLW5vZGVzIG9uIGFybTY0DQo+
ID4gKi8NCj4gPiArCWVyciA9IG9mX3BsYXRmb3JtX3BvcHVsYXRlKGZtX25vZGUsIE5VTEwsIE5V
TEwsICZvZl9kZXYtPmRldik7DQo+ID4gKwlpZiAoZXJyKSB7DQo+ID4gKwkJZGV2X2Vycigmb2Zf
ZGV2LT5kZXYsICIlczogb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKQ0KPiA+IGZhaWxlZFxuIiwNCj4g
PiArCQkJX19mdW5jX18pOw0KPiA+ICsJCWdvdG8gZm1hbl9mcmVlOw0KPiA+ICsJfQ0KPiANCj4g
VGhlICJvbiBhcm02NCIgY29tbWVudCBpcyBubyBsb25nZXIgYWNjdXJhdGUgKGFuZCB0aGUgcmVz
dCBvZiB0aGUgY29tbWVudA0KPiBzZWVtcyB1bm5lY2Vzc2FyeSkuDQo+IA0KPiAtU2NvdHQNCg0K
UmVtb3ZlZCBpbiB2NC4NCg==