netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] WOL for sis900
       [not found] ` <4183BDB3.8000302@pobox.com>
@ 2004-10-30 19:00   ` Daniele Venzano
  2004-10-31 13:08     ` Malte Schröder
  0 siblings, 1 reply; 2+ messages in thread
From: Daniele Venzano @ 2004-10-30 19:00 UTC (permalink / raw)
  To: NetDev; +Cc: Malte Schröder, Jeff Garzik

[-- Attachment #1: Type: text/plain, Size: 1165 bytes --]

On Sat, Oct 30, 2004 at 12:13:39PM -0400, Jeff Garzik wrote:
> Malte Schröder wrote:
> >Hello,
> >I have applied the patch from http://lkml.org/lkml/2003/7/16/88 manually 
> >to 2.6.7 (also works on 2.6.{8,9}) and have been using it since then.
> >Attached is a diff against 2.6.9.
> 
> 2) Please use ethtool to enable/disable WOL.  No need for a module option.

Attached is a first try at this wol via ethtool thing. I don't think to
have got it right, but here it is.

I tried to test WoL on my laptop, obvioulsy it didn't work, but I don't
even know if I have the hardware support for it.
On this page:
http://www.sis.com/products/connectivity/900.htm
it says that the magic packet feature is optional.

I would really like to have some way to check if WoL is supported by the
hardware before thinking to include this. I didn't find any
documentation of some use for this.

Finally, I have never realized the sorry state of sis900 wrt ethtool,
I'll try to get some more support...

The attached patch is against clean 2.6.9 and is NOT for inclusion.

-- 
------------------------------
Daniele Venzano
Web: http://teg.homeunix.org

[-- Attachment #2: sis900_wol_ethtool.diff --]
[-- Type: text/plain, Size: 2516 bytes --]

Index: sis900.c
===================================================================
--- sis900.c	(revision 13)
+++ sis900.c	(working copy)
@@ -120,6 +120,7 @@
 } mii_chip_table[] = {
 	{ "SiS 900 Internal MII PHY", 		0x001d, 0x8000, LAN },
 	{ "SiS 7014 Physical Layer Solution", 	0x0016, 0xf830, LAN },
+	{ "Altimata AC101LF PHY",               0x0022, 0x5520, LAN },
 	{ "AMD 79C901 10BASE-T PHY",  		0x0000, 0x6B70, LAN },
 	{ "AMD 79C901 HomePNA PHY",		0x0000, 0x6B90, HOME},
 	{ "ICS LAN PHY",			0x0015, 0xF440, LAN },
@@ -1903,8 +1904,41 @@
 	strcpy (info->bus_info, pci_name(sis_priv->pci_dev));
 }
 
+static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol)
+{
+	struct sis900_private *sis_priv = net_dev->priv;
+	long ioaddr = net_dev->base_addr;
+	u32 cfgpmcsr;
+	
+	if (wol->wolopts & WAKE_MAGIC) {
+		pci_read_config_dword(sis_priv->pci_dev, CFGPMCSR, &cfgpmcsr);
+		cfgpmcsr |= PME_EN;
+		pci_write_config_dword(sis_priv->pci_dev, CFGPMCSR, cfgpmcsr);
+		outl(inl(ioaddr + pmctrl) | MAGICPKT | ALGORITHM, ioaddr + pmctrl);
+	} else if (wol->wolopts) {
+		return -EINVAL;
+	} else {
+		pci_read_config_dword(sis_priv->pci_dev, CFGPMCSR, &cfgpmcsr);
+		cfgpmcsr |= ~PME_EN;
+		pci_write_config_dword(sis_priv->pci_dev, CFGPMCSR, cfgpmcsr);
+		outl(inl(ioaddr + pmctrl) & ~MAGICPKT, ioaddr + pmctrl);
+	}
+
+	return 0;
+}
+
+static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol)
+{
+	long ioaddr = net_dev->base_addr;
+
+	if (inl(ioaddr + pmctrl) & MAGICPKT, ioaddr + pmctrl)
+		wol->wolopts |= WAKE_MAGIC;
+}
+
 static struct ethtool_ops sis900_ethtool_ops = {
 	.get_drvinfo =		sis900_get_drvinfo,
+	.get_wol =		sis900_get_wol,
+	.set_wol =		sis900_set_wol,	
 };
 
 /**
Index: sis900.h
===================================================================
--- sis900.h	(revision 13)
+++ sis900.h	(working copy)
@@ -140,6 +140,25 @@
 	EEREQ = 0x00000400, EEDONE = 0x00000200, EEGNT = 0x00000100
 };
 
+/* Wake-on-LAN support. */
+enum sis900_power_management_control_register_bits {
+	LINKLOSS  = 0x00000001,
+	LINKON    = 0x00000002,
+	MAGICPKT  = 0x00000400,
+	ALGORITHM = 0x00000800,
+	FRM1EN    = 0x00100000,
+	FRM2EN    = 0x00200000,
+	FRM3EN    = 0x00400000,
+	FRM1ACS   = 0x01000000,
+	FRM2ACS   = 0x02000000,
+	FRM3ACS   = 0x04000000,
+	WAKEALL   = 0x40000000,
+	GATECLK   = 0x80000000
+};
+
+#define CFGPMCSR 0x44
+#define PME_EN 0x100
+
 /* Management Data I/O (mdio) frame */
 #define MIIread         0x6000
 #define MIIwrite        0x5002

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] WOL for sis900
  2004-10-30 19:00   ` [PATCH] WOL for sis900 Daniele Venzano
@ 2004-10-31 13:08     ` Malte Schröder
  0 siblings, 0 replies; 2+ messages in thread
From: Malte Schröder @ 2004-10-31 13:08 UTC (permalink / raw)
  To: Daniele Venzano; +Cc: NetDev, Jeff Garzik

[-- Attachment #1: Type: text/plain, Size: 1356 bytes --]

Daniele Venzano wrote:
> On Sat, Oct 30, 2004 at 12:13:39PM -0400, Jeff Garzik wrote:
> 
>>Malte Schröder wrote:
>>
>>>Hello,
>>>I have applied the patch from http://lkml.org/lkml/2003/7/16/88 manually 
>>>to 2.6.7 (also works on 2.6.{8,9}) and have been using it since then.
>>>Attached is a diff against 2.6.9.
>>
>>2) Please use ethtool to enable/disable WOL.  No need for a module option.
> 
> 
> Attached is a first try at this wol via ethtool thing. I don't think to
> have got it right, but here it is.
> 
> I tried to test WoL on my laptop, obvioulsy it didn't work, but I don't
> even know if I have the hardware support for it.
> On this page:
> http://www.sis.com/products/connectivity/900.htm
> it says that the magic packet feature is optional.
> 
> I would really like to have some way to check if WoL is supported by the
> hardware before thinking to include this. I didn't find any
> documentation of some use for this.
> 
> Finally, I have never realized the sorry state of sis900 wrt ethtool,
> I'll try to get some more support...
> 
> The attached patch is against clean 2.6.9 and is NOT for inclusion.

I just tried your patch and it works for me :)
My sis900 is on-board component of the sis746 chipset.
-- 
---------------------------------------
Malte Schröder
MalteSch@gmx.de
ICQ# 68121508
---------------------------------------


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-10-31 13:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <4183B6B0.7010906@gmx.de>
     [not found] ` <4183BDB3.8000302@pobox.com>
2004-10-30 19:00   ` [PATCH] WOL for sis900 Daniele Venzano
2004-10-31 13:08     ` Malte Schröder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).