From 2dbdce50231be49a719dd8be07c8c579feffb734 Mon Sep 17 00:00:00 2001 From: qi duan Date: Thu, 11 Jan 2024 15:01:01 +0800 Subject: [PATCH] mdns: mdns wakeup [1/1] PD#SWPL-107230 Problem: google cast wakeup Solution: add mdns wakeup source Verify: qurra Change-Id: I812c52da9c16d4e1d60f8598f47564a5506b14bc Signed-off-by: Luan Yuan --- .../boot/dts/amlogic/s7_s805x3_bp202.dts | 2 ++ .../boot/dts/amlogic/s7_s805x3_bp202_1.5g.dts | 2 ++ .../boot/dts/amlogic/s7_s905y5_bh201.dts | 2 ++ .../net/ethernet/stmicro/stmmac/dwmac4_core.c | 21 +++++++++++++++++++ 4 files changed, 27 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202.dts b/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202.dts index a0eb4ded1..112c5eb60 100644 --- a/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202.dts +++ b/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202.dts @@ -1141,6 +1141,8 @@ status = "okay"; phy-handle = <&internal_ephy>; phy-mode = "rmii"; + mac_wol = <1>; + mdns_wkup = <1>; }; &ir { diff --git a/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202_1.5g.dts b/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202_1.5g.dts index 69d2518f2..019b36e5b 100644 --- a/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202_1.5g.dts +++ b/arch/arm64/boot/dts/amlogic/s7_s805x3_bp202_1.5g.dts @@ -1137,6 +1137,8 @@ status = "okay"; phy-handle = <&internal_ephy>; phy-mode = "rmii"; + mac_wol = <1>; + mdns_wkup = <1>; }; &ir { diff --git a/arch/arm64/boot/dts/amlogic/s7_s905y5_bh201.dts b/arch/arm64/boot/dts/amlogic/s7_s905y5_bh201.dts index 250940bd0..41b4441ab 100644 --- a/arch/arm64/boot/dts/amlogic/s7_s905y5_bh201.dts +++ b/arch/arm64/boot/dts/amlogic/s7_s905y5_bh201.dts @@ -1216,6 +1216,8 @@ status = "okay"; phy-handle = <&internal_ephy>; phy-mode = "rmii"; + mac_wol = <1>; + mdns_wkup = <1>; }; &ir { diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c index 29480314a..e79885d6b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -315,6 +315,27 @@ static void dwmac4_pmt(struct mac_device_info *hw, unsigned long mode) unsigned int pmt = 0; u32 config; +#if IS_ENABLED(CONFIG_AMLOGIC_ETH_PRIVE) + if (mode & (1 << 8)) { + pr_debug("GMAC4: WOL mdns wakeup\n"); + /* udp: offset:0x17 val=0x11 + * mdns: offset:0x22 val=0x14 0xe9 0x14 0xe9 + * query:offset:0x2c val=0x0 + * crc16= 0x1089 + */ + writel(readl(ioaddr + GMAC_PACKET_FILTER) | GMAC_PACKET_FILTER_PM, + ioaddr + GMAC_PACKET_FILTER); + writel(0x207801, (ioaddr + 0xc4)); + writel(0, (ioaddr + 0xc4)); + writel(0, (ioaddr + 0xc4)); + writel(0, (ioaddr + 0xc4)); + writel(0x9, (ioaddr + 0xc4)); + writel(0x17, (ioaddr + 0xc4)); + writel(0x1089, (ioaddr + 0xc4)); + writel(0, (ioaddr + 0xc4)); + pmt |= power_down | wake_up_frame_en; + } +#endif if (mode & WAKE_MAGIC) { pr_debug("GMAC: WOL Magic frame\n"); pmt |= power_down | magic_pkt_en;