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 <luan.yuan@amlogic.com>
This commit is contained in:
qi duan
2024-01-11 15:01:01 +08:00
committed by Luan Yuan
parent 81edc1608b
commit 2dbdce5023
4 changed files with 27 additions and 0 deletions
@@ -1141,6 +1141,8 @@
status = "okay";
phy-handle = <&internal_ephy>;
phy-mode = "rmii";
mac_wol = <1>;
mdns_wkup = <1>;
};
&ir {
@@ -1137,6 +1137,8 @@
status = "okay";
phy-handle = <&internal_ephy>;
phy-mode = "rmii";
mac_wol = <1>;
mdns_wkup = <1>;
};
&ir {
@@ -1216,6 +1216,8 @@
status = "okay";
phy-handle = <&internal_ephy>;
phy-mode = "rmii";
mac_wol = <1>;
mdns_wkup = <1>;
};
&ir {
@@ -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;