mirror of
https://github.com/armbian/build.git
synced 2025-09-19 04:31:38 +02:00
* Add MXQ target. Copy HDMI fix from odroid-c1. * meson8, MXQ: add boot from usb support, configurable dtb * MXQ: remove boot logo Built-in U-BOOT is used, so the logo will not be displayed anyway. * meson: kernel update: legacy -> 6.6, current -> 6.12 * Change Odroid C1 and Onecloud to community supported as build now passes --------- Co-authored-by: Igor Pecovnik <igor@armbian.com>
77 lines
2.5 KiB
Diff
77 lines
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
Date: Sat, 25 Dec 2021 04:18:30 +0100
|
|
Subject: net: stmmac: dwmac-meson: Initialize all known PREG_ETHERNET_ADDR0
|
|
bits
|
|
|
|
Initialize all known PREG_ETHERNET_ADDR0 register bits to be less
|
|
dependent on the bootloader to set them up correctly.
|
|
|
|
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
---
|
|
drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c | 25 ++++++++--
|
|
1 file changed, 22 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c
|
|
index 111111111111..222222222222 100644
|
|
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c
|
|
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c
|
|
@@ -5,6 +5,7 @@
|
|
* Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
|
|
*/
|
|
|
|
+#include <linux/bitfield.h>
|
|
#include <linux/clk.h>
|
|
#include <linux/device.h>
|
|
#include <linux/ethtool.h>
|
|
@@ -16,10 +17,20 @@
|
|
|
|
#include "stmmac_platform.h"
|
|
|
|
-#define PREG_ETHERNET_ADDR0_DIV_EN BIT(0)
|
|
+#define PREG_ETHERNET_ADDR0_DIV_EN BIT(0)
|
|
|
|
/* divides the input clock by 20 (= 0x0) or 2 (= 0x1) */
|
|
-#define PREG_ETHERNET_ADDR0_SPEED_100 BIT(1)
|
|
+#define PREG_ETHERNET_ADDR0_SPEED_100 BIT(1)
|
|
+
|
|
+/* 0x0 = little, 0x1 = big */
|
|
+#define PREG_ETHERNET_ADDR0_DATA_ENDIANNESS BIT(2)
|
|
+
|
|
+/* 0x0 = same order, 0x1: unknown */
|
|
+#define PREG_ETHERNET_ADDR0_DESC_ENDIANNESS BIT(3)
|
|
+
|
|
+#define PREG_ETHERNET_ADDR0_MII_MODE GENMASK(6, 4)
|
|
+#define PREG_ETHERNET_ADDR0_MII_MODE_RGMII 0x1
|
|
+#define PREG_ETHERNET_ADDR0_MII_MODE_RMII 0x4
|
|
|
|
struct meson_dwmac {
|
|
struct device *dev;
|
|
@@ -49,6 +60,7 @@ static void meson6_dwmac_fix_mac_speed(void *priv, unsigned int speed, unsigned
|
|
static int meson6_dwmac_init(struct platform_device *pdev, void *priv)
|
|
{
|
|
struct meson_dwmac *dwmac = priv;
|
|
+ u32 val;
|
|
int ret;
|
|
|
|
ret = clk_set_rate(dwmac->ethernet_clk, 50 * 1000 * 1000);
|
|
@@ -59,7 +71,14 @@ static int meson6_dwmac_init(struct platform_device *pdev, void *priv)
|
|
if (ret)
|
|
return ret;
|
|
|
|
- writel(readl(dwmac->reg) | PREG_ETHERNET_ADDR0_DIV_EN, dwmac->reg);
|
|
+ val = readl(dwmac->reg);
|
|
+ val &= ~PREG_ETHERNET_ADDR0_DATA_ENDIANNESS;
|
|
+ val &= ~PREG_ETHERNET_ADDR0_DESC_ENDIANNESS;
|
|
+ val &= ~PREG_ETHERNET_ADDR0_MII_MODE;
|
|
+ val |= FIELD_PREP(PREG_ETHERNET_ADDR0_MII_MODE,
|
|
+ PREG_ETHERNET_ADDR0_MII_MODE_RMII);
|
|
+ val |= PREG_ETHERNET_ADDR0_DIV_EN;
|
|
+ writel(val, dwmac->reg);
|
|
|
|
return 0;
|
|
}
|
|
--
|
|
Armbian
|
|
|