Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aaa56720 authored by Jean Sacren's avatar Jean Sacren Committed by David S. Miller
Browse files

sxgbe: remove unused code



Remove the unused code of sxgbe_xpcs.

Reported-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
Suggested-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarJean Sacren <sakiwit@gmail.com>
Cc: Byungho An <bh74.an@samsung.com>
Cc: Girish K S <ks.giri@samsung.com>
Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1601191918470.2531@hadrien


Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 12f08412
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
obj-$(CONFIG_SXGBE_ETH) += samsung-sxgbe.o
samsung-sxgbe-objs:= sxgbe_platform.o sxgbe_main.o sxgbe_desc.o \
		sxgbe_dma.o sxgbe_core.o sxgbe_mtl.o  sxgbe_mdio.o \
		sxgbe_ethtool.o sxgbe_xpcs.o $(samsung-sxgbe-y)
		sxgbe_ethtool.o $(samsung-sxgbe-y)
+0 −91
Original line number Diff line number Diff line
/* 10G controller driver for Samsung SoCs
 *
 * Copyright (C) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Author: Siva Reddy Kallam <siva.kallam@samsung.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#include <linux/bitops.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/phy.h>
#include "sxgbe_common.h"
#include "sxgbe_xpcs.h"

static int sxgbe_xpcs_read(struct net_device *ndev, unsigned int reg)
{
	u32 value;
	struct sxgbe_priv_data *priv = netdev_priv(ndev);

	value = readl(priv->ioaddr + XPCS_OFFSET + reg);

	return value;
}

static int sxgbe_xpcs_write(struct net_device *ndev, int reg, int data)
{
	struct sxgbe_priv_data *priv = netdev_priv(ndev);

	writel(data, priv->ioaddr + XPCS_OFFSET + reg);

	return 0;
}

int sxgbe_xpcs_init(struct net_device *ndev)
{
	u32 value;

	value = sxgbe_xpcs_read(ndev, SR_PCS_MMD_CONTROL1);
	/* 10G XAUI mode */
	sxgbe_xpcs_write(ndev, SR_PCS_CONTROL2, XPCS_TYPE_SEL_X);
	sxgbe_xpcs_write(ndev, VR_PCS_MMD_XAUI_MODE_CONTROL, XPCS_XAUI_MODE);
	sxgbe_xpcs_write(ndev, VR_PCS_MMD_XAUI_MODE_CONTROL, value | BIT(13));
	sxgbe_xpcs_write(ndev, SR_PCS_MMD_CONTROL1, value | BIT(11));

	do {
		value = sxgbe_xpcs_read(ndev, VR_PCS_MMD_DIGITAL_STATUS);
	} while ((value & XPCS_QSEQ_STATE_MPLLOFF) == XPCS_QSEQ_STATE_STABLE);

	value = sxgbe_xpcs_read(ndev, SR_PCS_MMD_CONTROL1);
	sxgbe_xpcs_write(ndev, SR_PCS_MMD_CONTROL1, value & ~BIT(11));

	do {
		value = sxgbe_xpcs_read(ndev, VR_PCS_MMD_DIGITAL_STATUS);
	} while ((value & XPCS_QSEQ_STATE_MPLLOFF) != XPCS_QSEQ_STATE_STABLE);

	return 0;
}

int sxgbe_xpcs_init_1G(struct net_device *ndev)
{
	int value;

	/* 10GBASE-X PCS (1G) mode */
	sxgbe_xpcs_write(ndev, SR_PCS_CONTROL2, XPCS_TYPE_SEL_X);
	sxgbe_xpcs_write(ndev, VR_PCS_MMD_XAUI_MODE_CONTROL, XPCS_XAUI_MODE);
	value = sxgbe_xpcs_read(ndev, SR_PCS_MMD_CONTROL1);
	sxgbe_xpcs_write(ndev, SR_PCS_MMD_CONTROL1, value & ~BIT(13));

	value = sxgbe_xpcs_read(ndev, SR_MII_MMD_CONTROL);
	sxgbe_xpcs_write(ndev, SR_MII_MMD_CONTROL, value | BIT(6));
	sxgbe_xpcs_write(ndev, SR_MII_MMD_CONTROL, value & ~BIT(13));
	value = sxgbe_xpcs_read(ndev, SR_PCS_MMD_CONTROL1);
	sxgbe_xpcs_write(ndev, SR_PCS_MMD_CONTROL1, value | BIT(11));

	do {
		value = sxgbe_xpcs_read(ndev, VR_PCS_MMD_DIGITAL_STATUS);
	} while ((value & XPCS_QSEQ_STATE_MPLLOFF) != XPCS_QSEQ_STATE_STABLE);

	value = sxgbe_xpcs_read(ndev, SR_PCS_MMD_CONTROL1);
	sxgbe_xpcs_write(ndev, SR_PCS_MMD_CONTROL1, value & ~BIT(11));

	/* Auto Negotiation cluase 37 enable */
	value = sxgbe_xpcs_read(ndev, SR_MII_MMD_CONTROL);
	sxgbe_xpcs_write(ndev, SR_MII_MMD_CONTROL, value | BIT(12));

	return 0;
}
+0 −38
Original line number Diff line number Diff line
/* 10G controller driver for Samsung SoCs
 *
 * Copyright (C) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Author: Byungho An <bh74.an@samsung.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#ifndef __SXGBE_XPCS_H__
#define __SXGBE_XPCS_H__

/* XPCS Registers */
#define XPCS_OFFSET			0x1A060000
#define SR_PCS_MMD_CONTROL1		0x030000
#define SR_PCS_CONTROL2			0x030007
#define VR_PCS_MMD_XAUI_MODE_CONTROL	0x038004
#define VR_PCS_MMD_DIGITAL_STATUS	0x038010
#define SR_MII_MMD_CONTROL		0x1F0000
#define SR_MII_MMD_AN_ADV		0x1F0004
#define SR_MII_MMD_AN_LINK_PARTNER_BA	0x1F0005
#define VR_MII_MMD_AN_CONTROL		0x1F8001
#define VR_MII_MMD_AN_INT_STATUS	0x1F8002

#define XPCS_QSEQ_STATE_STABLE		0x10
#define XPCS_QSEQ_STATE_MPLLOFF		0x1c
#define XPCS_TYPE_SEL_R			0x00
#define XPCS_TYPE_SEL_X			0x01
#define XPCS_TYPE_SEL_W			0x02
#define XPCS_XAUI_MODE			0x00
#define XPCS_RXAUI_MODE			0x01

int sxgbe_xpcs_init(struct net_device *ndev);
int sxgbe_xpcs_init_1G(struct net_device *ndev);

#endif /* __SXGBE_XPCS_H__ */