summaryrefslogtreecommitdiff
path: root/drivers/net/r8168/rtltool.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/r8168/rtltool.c')
-rw-r--r--drivers/net/r8168/rtltool.c338
1 files changed, 0 insertions, 338 deletions
diff --git a/drivers/net/r8168/rtltool.c b/drivers/net/r8168/rtltool.c
deleted file mode 100644
index fd86772a2243..000000000000
--- a/drivers/net/r8168/rtltool.c
+++ /dev/null
@@ -1,338 +0,0 @@
-#include <linux/module.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/netdevice.h>
-#include <linux/delay.h>
-#include <linux/in.h>
-#include <linux/ethtool.h>
-#include "r8168.h"
-#include "rtl_eeprom.h"
-#include "rtltool.h"
-
-static int
-OOB_set_ip_mac(struct rtl8168_private *tp, struct sockaddr_in *sa, u8 *mac)
-{
- u32 data;
-
- if (tp->mcfg == CFG_METHOD_13) {
- OCP_write(tp, 0xF, 0xd0, be32_to_cpu(sa->sin_addr.s_addr));
-
- memcpy(&data, mac, 4);
- OCP_write(tp, 0xF, 0x00, le32_to_cpu(data));
- data = 0;
- memcpy(&data, mac + 4, 2);
- OCP_write(tp, 0x3, 0x04, le32_to_cpu(data));
-
- OOB_notify(tp, OOB_CMD_SET_IPMAC);
- } else if (tp->mcfg == CFG_METHOD_17) {
- void __iomem *ioaddr = tp->mmio_addr;
- struct net_device *dev = tp->dev;
- u32 rx_mode;
-
- rx_mode = RTL_R32(RxConfig);
- if (netif_running(dev)) {
- netif_stop_queue(dev);
- RTL_W32(RxConfig, rx_mode & ~0x3f);
- while ((RTL_R8(0xd3) & (BIT_5 | BIT_4)) != ((BIT_5 | BIT_4)))
- udelay(20);
- RTL_W8(ChipCmd, RTL_R8(ChipCmd) & ~(CmdTxEnb | CmdRxEnb));
-/* } else {
- unsigned long flags;
-
- spin_lock_irqsave(&tp->phy_lock, flags);
- mdio_write(tp, 0x1f, 0x0000);
- data = mdio_read(tp, MII_CTRL1000);
- data &= ~(ADVERTISE_1000HALF | ADVERTISE_1000FULL);
- mdio_write(tp, MII_CTRL1000, data);
- mdio_write(tp, 0x00, 0x9200);
- spin_unlock_irqrestore(&tp->phy_lock, flags);
-
- ssleep(3);
- RTL_W16(IntrStatus, RTL_R16(IntrStatus));
-
- RTL_W32(MAR0, 0);
- RTL_W32(MAR0 + 4, 0);
- RTL_W16(RxMaxSize, 0x05f3);*/
- }
- RTL_W8(0xD3, RTL_R8(0xD3) & ~BIT_7);
- rtl8168_eri_write(ioaddr, 0x180, 4, 0x06080888, ERIAR_ExGMAC);
- rtl8168_eri_write(ioaddr, 0x184, 4, 0xdd860008, ERIAR_ExGMAC);
-
- memcpy(&data, mac, 2);
- rtl8168_eri_write(ioaddr, 0xf0, 4, (le32_to_cpu(data) << 16), ERIAR_ExGMAC);
- memcpy(&data, mac + 2, 4);
- rtl8168_eri_write(ioaddr, 0xf4, 4, le32_to_cpu(data), ERIAR_ExGMAC);
-
- rtl8168_eri_write(ioaddr, 0x190, 4, 0x3c110600, ERIAR_ExGMAC);
- rtl8168_eri_write(ioaddr, 0x194, 4, 0x2c32332b, ERIAR_ExGMAC);
- rtl8168_eri_write(ioaddr, 0x198, 4, 0x003a0201, ERIAR_ExGMAC);
- rtl8168_eri_write(ioaddr, 0x19c, 4, 0x00000000, ERIAR_ExGMAC);
-
- rtl8168_eri_write(ioaddr, 0x1f0, 4, cpu_to_le32(sa->sin_addr.s_addr), ERIAR_ExGMAC);
-
- memcpy(&data, mac, 4);
- rtl8168_eri_write(ioaddr, 0x258, 4, le32_to_cpu(data), ERIAR_ExGMAC);
- memcpy(&data, mac + 4, 2);
- rtl8168_eri_write(ioaddr, 0x25c, 2, le32_to_cpu(data), ERIAR_ExGMAC);
-
- RTL_W8(0xe0, RTL_R8(0xe0) | BIT_6);
- while (!(RTL_R8(0xd3) & BIT_1))
- udelay(20);
-
- RTL_W32(0xb0, 0x9800e035);
- RTL_W32(0xb0, 0x9801e034);
- RTL_W32(0xb0, 0x9802e019);
- RTL_W32(0xb0, 0x98039918);
- RTL_W32(0xb0, 0x9804c011);
- RTL_W32(0xb0, 0x98057100);
- RTL_W32(0xb0, 0x9806499f);
- RTL_W32(0xb0, 0x9807f011);
- RTL_W32(0xb0, 0x9808c00e);
- RTL_W32(0xb0, 0x98097100);
- RTL_W32(0xb0, 0x980A4995);
- RTL_W32(0xb0, 0x980Bf00d);
- RTL_W32(0xb0, 0x980C4895);
- RTL_W32(0xb0, 0x980D9900);
- RTL_W32(0xb0, 0x980Ec009);
- RTL_W32(0xb0, 0x980F7100);
- RTL_W32(0xb0, 0x98104890);
- RTL_W32(0xb0, 0x98119900);
- RTL_W32(0xb0, 0x98124810);
- RTL_W32(0xb0, 0x98139900);
- RTL_W32(0xb0, 0x9814e004);
- RTL_W32(0xb0, 0x9815d44e);
- RTL_W32(0xb0, 0x9816d506);
- RTL_W32(0xb0, 0x9817c0b4);
- RTL_W32(0xb0, 0x9818c002);
- RTL_W32(0xb0, 0x9819b800);
- RTL_W32(0xb0, 0x981A0500);
- RTL_W32(0xb0, 0x981B1a26);
- RTL_W32(0xb0, 0x981Ca4ca);
- RTL_W32(0xb0, 0x981D21bc);
- RTL_W32(0xb0, 0x981E25bc);
- RTL_W32(0xb0, 0x981F1305);
- RTL_W32(0xb0, 0x9820f00d);
- RTL_W32(0xb0, 0x9821c213);
- RTL_W32(0xb0, 0x98227340);
- RTL_W32(0xb0, 0x982349b0);
- RTL_W32(0xb0, 0x9824f009);
- RTL_W32(0xb0, 0x98251a3a);
- RTL_W32(0xb0, 0x9826a4ca);
- RTL_W32(0xb0, 0x982721b9);
- RTL_W32(0xb0, 0x982825b9);
- RTL_W32(0xb0, 0x98291303);
- RTL_W32(0xb0, 0x982Af006);
- RTL_W32(0xb0, 0x982B1309);
- RTL_W32(0xb0, 0x982Cf004);
- RTL_W32(0xb0, 0x982Dc306);
- RTL_W32(0xb0, 0x982E1a26);
- RTL_W32(0xb0, 0x982Fbb00);
- RTL_W32(0xb0, 0x9830c302);
- RTL_W32(0xb0, 0x9831bb00);
- RTL_W32(0xb0, 0x98320f3e);
- RTL_W32(0xb0, 0x98330f4e);
- RTL_W32(0xb0, 0x9834c0ae);
- RTL_W32(0xb0, 0x98351800);
- RTL_W32(0xb0, 0x9836b800);
- RTL_W32(0xb0, 0xfe173000);
- RTL_W32(0xb0, 0xfe1604ff);
- RTL_W32(0xb0, 0xfe150f4d);
- data = rtl8168_eri_read(ioaddr, 0xd6, 1, ERIAR_ExGMAC);
- rtl8168_eri_write(ioaddr, 0xd6, 1, data | BIT_0, ERIAR_ExGMAC);
-
- if (netif_running(dev)) {
- rtl8168_init_ring_indexes(tp);
- RTL_W8(ChipCmd, CmdRxEnb | CmdTxEnb);
- RTL_W32(RxConfig, rx_mode);
- netif_wake_queue(dev);
- } else {
- RTL_W8(0xD3, RTL_R8(0xD3) | BIT_7);
-
-// data = rtl8168_eri_read(ioaddr, 0xDC, 1, ERIAR_ExGMAC);
-// data &= ~BIT_0;
-// rtl8168_eri_write( ioaddr, 0xDC, 1, data, ERIAR_ExGMAC);
-// data |= BIT_0;
-// rtl8168_eri_write( ioaddr, 0xDC, 1, data, ERIAR_ExGMAC);
-
- RTL_W32(RxConfig, rx_mode | 0x0e);
- }
- } else {
- return -EFAULT;
- }
- return 0;
-}
-
-int rtltool_ioctl(struct rtl8168_private *tp, struct ifreq *ifr)
-{
- struct rtltool_cmd my_cmd;
- unsigned long flags;
- int ret;
-
- if (copy_from_user(&my_cmd, ifr->ifr_data, sizeof(my_cmd)))
- return -EFAULT;
-
- ret = 0;
- switch (my_cmd.cmd) {
- case RTLTOOL_READ_MAC:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- if (my_cmd.len==1)
- my_cmd.data = readb(tp->mmio_addr+my_cmd.offset);
- else if (my_cmd.len==2)
- my_cmd.data = readw(tp->mmio_addr+(my_cmd.offset&~1));
- else if (my_cmd.len==4)
- my_cmd.data = readl(tp->mmio_addr+(my_cmd.offset&~3));
- else {
- ret = -EOPNOTSUPP;
- break;
- }
-
- if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
- ret = -EFAULT;
- break;
- }
- break;
-
- case RTLTOOL_WRITE_MAC:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- if (my_cmd.len==1)
- writeb(my_cmd.data, tp->mmio_addr+my_cmd.offset);
- else if (my_cmd.len==2)
- writew(my_cmd.data, tp->mmio_addr+(my_cmd.offset&~1));
- else if (my_cmd.len==4)
- writel(my_cmd.data, tp->mmio_addr+(my_cmd.offset&~3));
- else {
- ret = -EOPNOTSUPP;
- break;
- }
-
- break;
-
- case RTLTOOL_READ_PHY:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- spin_lock_irqsave(&tp->phy_lock, flags);
- my_cmd.data = mdio_read(tp, my_cmd.offset);
- spin_unlock_irqrestore(&tp->phy_lock, flags);
-
- if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
- ret = -EFAULT;
- break;
- }
-
- break;
-
- case RTLTOOL_WRITE_PHY:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- spin_lock_irqsave(&tp->phy_lock, flags);
- mdio_write(tp, my_cmd.offset, my_cmd.data);
- spin_unlock_irqrestore(&tp->phy_lock, flags);
- break;
-
- case RTLTOOL_READ_EPHY:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- my_cmd.data = rtl8168_ephy_read(tp->mmio_addr, my_cmd.offset);
-
- if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
- ret = -EFAULT;
- break;
- }
-
- break;
-
- case RTLTOOL_WRITE_EPHY:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- rtl8168_ephy_write(tp->mmio_addr, my_cmd.offset, my_cmd.data);
- break;
-
- case RTLTOOL_READ_PCI:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- my_cmd.data = 0;
- if (my_cmd.len==1)
- pci_read_config_byte(tp->pci_dev, my_cmd.offset,
- (u8 *)&my_cmd.data);
- else if (my_cmd.len==2)
- pci_read_config_word(tp->pci_dev, my_cmd.offset,
- (u16 *)&my_cmd.data);
- else if (my_cmd.len==4)
- pci_read_config_dword(tp->pci_dev, my_cmd.offset,
- &my_cmd.data);
- else {
- ret = -EOPNOTSUPP;
- break;
- }
-
- if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
- ret = -EFAULT;
- break;
- }
- break;
-
- case RTLTOOL_WRITE_PCI:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- if (my_cmd.len==1)
- pci_write_config_byte(tp->pci_dev, my_cmd.offset,
- my_cmd.data);
- else if (my_cmd.len==2)
- pci_write_config_word(tp->pci_dev, my_cmd.offset,
- my_cmd.data);
- else if (my_cmd.len==4)
- pci_write_config_dword(tp->pci_dev, my_cmd.offset,
- my_cmd.data);
- else {
- ret = -EOPNOTSUPP;
- break;
- }
-
- break;
-
- case RTLTOOL_READ_EEPROM:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- my_cmd.data = rtl_eeprom_read_sc(tp, my_cmd.offset);
-
- if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
- ret = -EFAULT;
- break;
- }
-
- break;
-
- case RTLTOOL_WRITE_EEPROM:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
-
- rtl_eeprom_write_sc(tp->mmio_addr, my_cmd.offset, my_cmd.data);
- break;
-
- case RTL_ARP_NS_OFFLOAD:
- break;
-
- case RTL_SET_OOB_IPMAC:
- ret = OOB_set_ip_mac(tp,
- (struct sockaddr_in *)&my_cmd.ifru_addr,
- my_cmd.ifru_hwaddr.sa_data);
- break;
-
- default:
- ret = -EOPNOTSUPP;
- break;
- }
-
- return ret;
-}