Skip to content

Commit 71e2135

Browse files
LorenzoBianconiPaolo Abeni
authored andcommitted
net: ethernet: mtk_wed: make memory region optional
Make mtk_wed_wo_memory_region optionals. This is a preliminary patch to introduce Wireless Ethernet Dispatcher support for MT7988 SoC since MT7988 WED fw image will have a different layout. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent c6d961a commit 71e2135

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

drivers/net/ethernet/mediatek/mtk_wed_mcu.c

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -234,19 +234,13 @@ int mtk_wed_mcu_msg_update(struct mtk_wed_device *dev, int id, void *data,
234234
}
235235

236236
static int
237-
mtk_wed_get_memory_region(struct mtk_wed_wo *wo,
237+
mtk_wed_get_memory_region(struct mtk_wed_hw *hw, int index,
238238
struct mtk_wed_wo_memory_region *region)
239239
{
240240
struct reserved_mem *rmem;
241241
struct device_node *np;
242-
int index;
243242

244-
index = of_property_match_string(wo->hw->node, "memory-region-names",
245-
region->name);
246-
if (index < 0)
247-
return index;
248-
249-
np = of_parse_phandle(wo->hw->node, "memory-region", index);
243+
np = of_parse_phandle(hw->node, "memory-region", index);
250244
if (!np)
251245
return -ENODEV;
252246

@@ -258,7 +252,7 @@ mtk_wed_get_memory_region(struct mtk_wed_wo *wo,
258252

259253
region->phy_addr = rmem->base;
260254
region->size = rmem->size;
261-
region->addr = devm_ioremap(wo->hw->dev, region->phy_addr, region->size);
255+
region->addr = devm_ioremap(hw->dev, region->phy_addr, region->size);
262256

263257
return !region->addr ? -EINVAL : 0;
264258
}
@@ -271,6 +265,9 @@ mtk_wed_mcu_run_firmware(struct mtk_wed_wo *wo, const struct firmware *fw,
271265
const struct mtk_wed_fw_trailer *trailer;
272266
const struct mtk_wed_fw_region *fw_region;
273267

268+
if (!region->phy_addr || !region->size)
269+
return 0;
270+
274271
trailer_ptr = fw->data + fw->size - sizeof(*trailer);
275272
trailer = (const struct mtk_wed_fw_trailer *)trailer_ptr;
276273
region_ptr = trailer_ptr - trailer->num_region * sizeof(*fw_region);
@@ -318,7 +315,13 @@ mtk_wed_mcu_load_firmware(struct mtk_wed_wo *wo)
318315

319316
/* load firmware region metadata */
320317
for (i = 0; i < ARRAY_SIZE(mem_region); i++) {
321-
ret = mtk_wed_get_memory_region(wo, &mem_region[i]);
318+
int index = of_property_match_string(wo->hw->node,
319+
"memory-region-names",
320+
mem_region[i].name);
321+
if (index < 0)
322+
continue;
323+
324+
ret = mtk_wed_get_memory_region(wo->hw, index, &mem_region[i]);
322325
if (ret)
323326
return ret;
324327
}

0 commit comments

Comments
 (0)