generic: backport accepted and pending patches for mtk_eth_soc
Backport a bunch of fixes and improvements for WED and PPE, mostly for MT7988. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
@@ -26,7 +26,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
{
|
||||
struct reserved_mem *rmem;
|
||||
struct device_node *np;
|
||||
@@ -321,7 +321,7 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
@@ -325,7 +325,7 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
if (index < 0)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -23,9 +23,12 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
||||
@@ -34,12 +34,23 @@ static struct mtk_wed_wo_memory_region m
|
||||
@@ -32,14 +32,25 @@ static struct mtk_wed_wo_memory_region m
|
||||
},
|
||||
};
|
||||
|
||||
static u32 wo_r32(struct mtk_wed_wo *wo, u32 reg)
|
||||
-static u32 wo_r32(u32 reg)
|
||||
+static u32 wo_r32(struct mtk_wed_wo *wo, u32 reg)
|
||||
{
|
||||
- return readl(mem_region[MTK_WED_WO_REGION_BOOT].addr + reg);
|
||||
+ u32 val;
|
||||
@@ -39,7 +42,8 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
+ return val;
|
||||
}
|
||||
|
||||
static void wo_w32(struct mtk_wed_wo *wo, u32 reg, u32 val)
|
||||
-static void wo_w32(u32 reg, u32 val)
|
||||
+static void wo_w32(struct mtk_wed_wo *wo, u32 reg, u32 val)
|
||||
{
|
||||
- writel(val, mem_region[MTK_WED_WO_REGION_BOOT].addr + reg);
|
||||
+ if (wo->boot_regmap)
|
||||
@@ -49,7 +53,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
}
|
||||
|
||||
static struct sk_buff *
|
||||
@@ -313,6 +324,9 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
@@ -317,6 +328,9 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
u32 val, boot_cr;
|
||||
int ret, i;
|
||||
|
||||
@@ -59,7 +63,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
/* load firmware region metadata */
|
||||
for (i = 0; i < ARRAY_SIZE(mem_region); i++) {
|
||||
int index = of_property_match_string(wo->hw->node,
|
||||
@@ -321,6 +335,9 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
@@ -325,6 +339,9 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
if (index < 0)
|
||||
continue;
|
||||
|
||||
@@ -69,6 +73,24 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
ret = mtk_wed_get_reserved_memory_region(wo->hw, index, &mem_region[i]);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -373,13 +390,13 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
boot_cr = MTK_WO_MCU_CFG_LS_WA_BOOT_ADDR_ADDR;
|
||||
else
|
||||
boot_cr = MTK_WO_MCU_CFG_LS_WM_BOOT_ADDR_ADDR;
|
||||
- wo_w32(boot_cr, mem_region[MTK_WED_WO_REGION_EMI].phy_addr >> 16);
|
||||
+ wo_w32(wo, boot_cr, mem_region[MTK_WED_WO_REGION_EMI].phy_addr >> 16);
|
||||
/* wo firmware reset */
|
||||
- wo_w32(MTK_WO_MCU_CFG_LS_WF_MCCR_CLR_ADDR, 0xc00);
|
||||
+ wo_w32(wo, MTK_WO_MCU_CFG_LS_WF_MCCR_CLR_ADDR, 0xc00);
|
||||
|
||||
- val = wo_r32(MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR) |
|
||||
+ val = wo_r32(wo, MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR) |
|
||||
MTK_WO_MCU_CFG_LS_WF_WM_WA_WM_CPU_RSTB_MASK;
|
||||
- wo_w32(MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR, val);
|
||||
+ wo_w32(wo, MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR, val);
|
||||
out:
|
||||
release_firmware(fw);
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_wed_wo.h
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed_wo.h
|
||||
@@ -231,6 +231,7 @@ struct mtk_wed_wo_queue {
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
||||
@@ -316,6 +316,39 @@ next:
|
||||
@@ -320,6 +320,39 @@ next:
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -60,7 +60,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
mtk_wed_mcu_load_firmware(struct mtk_wed_wo *wo)
|
||||
{
|
||||
const struct mtk_wed_fw_trailer *trailer;
|
||||
@@ -324,14 +357,20 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
@@ -328,14 +361,20 @@ mtk_wed_mcu_load_firmware(struct mtk_wed
|
||||
u32 val, boot_cr;
|
||||
int ret, i;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
|
||||
@@ -1320,6 +1320,24 @@ mtk_wed_rro_alloc(struct mtk_wed_device
|
||||
@@ -1322,6 +1322,24 @@ mtk_wed_rro_alloc(struct mtk_wed_device
|
||||
struct device_node *np;
|
||||
int index;
|
||||
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
index = of_property_match_string(dev->hw->node, "memory-region-names",
|
||||
"wo-dlm");
|
||||
if (index < 0)
|
||||
@@ -1336,6 +1354,7 @@ mtk_wed_rro_alloc(struct mtk_wed_device
|
||||
@@ -1338,6 +1356,7 @@ mtk_wed_rro_alloc(struct mtk_wed_device
|
||||
return -ENODEV;
|
||||
|
||||
dev->rro.miod_phys = rmem->base;
|
||||
|
||||
Reference in New Issue
Block a user