mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
net: tsec: Cleanup tsec regs init and fix __iomem warns
Remove tsec_t typedef. Define macros as getters of tsec and mdio register memory regions, for consistent initialization of various 'regs' fields and also to manage overly long initialization lines. Use the __iomem address space marker to address sparse warnings in tsec.c where IO accessors are used, like: tsec.c:394:19: warning: incorrect type in argument 1 (different address spaces) tsec.c:394:19: expected unsigned int volatile [noderef] <asn:2>*addr tsec.c:394:19: got unsigned int *<noident> [...] Add the __iomem address space marker for the tsec pointers to struct tsec_mii_mng memory mapped register regions. This solves the sparse warnings for mixig normal pointers with __iomem pointers for tsec. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
This commit is contained in:
committed by
Joe Hershberger
parent
b200204e8e
commit
aec84bf671
@@ -5,7 +5,7 @@
|
|||||||
* terms of the GNU Public License, Version 2, incorporated
|
* terms of the GNU Public License, Version 2, incorporated
|
||||||
* herein by reference.
|
* herein by reference.
|
||||||
*
|
*
|
||||||
* Copyright 2004-2011 Freescale Semiconductor, Inc.
|
* Copyright 2004-2011, 2013 Freescale Semiconductor, Inc.
|
||||||
* (C) Copyright 2003, Motorola, Inc.
|
* (C) Copyright 2003, Motorola, Inc.
|
||||||
* author Andy Fleming
|
* author Andy Fleming
|
||||||
*
|
*
|
||||||
@@ -52,7 +52,7 @@ static struct tsec_info_struct tsec_info[] = {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_MPC85XX_FEC
|
#ifdef CONFIG_MPC85XX_FEC
|
||||||
{
|
{
|
||||||
.regs = (tsec_t *)(TSEC_BASE_ADDR + 0x2000),
|
.regs = TSEC_GET_REGS(2, 0x2000),
|
||||||
.devname = CONFIG_MPC85XX_FEC_NAME,
|
.devname = CONFIG_MPC85XX_FEC_NAME,
|
||||||
.phyaddr = FEC_PHY_ADDR,
|
.phyaddr = FEC_PHY_ADDR,
|
||||||
.flags = FEC_FLAGS,
|
.flags = FEC_FLAGS,
|
||||||
@@ -141,7 +141,7 @@ tsec_mcast_addr(struct eth_device *dev, const u8 *mcast_mac, u8 set)
|
|||||||
* those we don't care about (unless zero is bad, in which case,
|
* those we don't care about (unless zero is bad, in which case,
|
||||||
* choose a more appropriate value)
|
* choose a more appropriate value)
|
||||||
*/
|
*/
|
||||||
static void init_registers(tsec_t *regs)
|
static void init_registers(struct tsec __iomem *regs)
|
||||||
{
|
{
|
||||||
/* Clear IEVENT */
|
/* Clear IEVENT */
|
||||||
out_be32(®s->ievent, IEVENT_INIT_CLEAR);
|
out_be32(®s->ievent, IEVENT_INIT_CLEAR);
|
||||||
@@ -188,7 +188,7 @@ static void init_registers(tsec_t *regs)
|
|||||||
*/
|
*/
|
||||||
static void adjust_link(struct tsec_private *priv, struct phy_device *phydev)
|
static void adjust_link(struct tsec_private *priv, struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
u32 ecntrl, maccfg2;
|
u32 ecntrl, maccfg2;
|
||||||
|
|
||||||
if (!phydev->link) {
|
if (!phydev->link) {
|
||||||
@@ -242,7 +242,7 @@ static void adjust_link(struct tsec_private *priv, struct phy_device *phydev)
|
|||||||
void redundant_init(struct eth_device *dev)
|
void redundant_init(struct eth_device *dev)
|
||||||
{
|
{
|
||||||
struct tsec_private *priv = dev->priv;
|
struct tsec_private *priv = dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
uint t, count = 0;
|
uint t, count = 0;
|
||||||
int fail = 1;
|
int fail = 1;
|
||||||
static const u8 pkt[] = {
|
static const u8 pkt[] = {
|
||||||
@@ -321,7 +321,7 @@ static void startup_tsec(struct eth_device *dev)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
|
|
||||||
/* reset the indices to zero */
|
/* reset the indices to zero */
|
||||||
rxIdx = 0;
|
rxIdx = 0;
|
||||||
@@ -375,7 +375,7 @@ static int tsec_send(struct eth_device *dev, void *packet, int length)
|
|||||||
int i;
|
int i;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
|
|
||||||
/* Find an empty buffer descriptor */
|
/* Find an empty buffer descriptor */
|
||||||
for (i = 0; rtx.txbd[txIdx].status & TXBD_READY; i++) {
|
for (i = 0; rtx.txbd[txIdx].status & TXBD_READY; i++) {
|
||||||
@@ -411,7 +411,7 @@ static int tsec_recv(struct eth_device *dev)
|
|||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
|
|
||||||
while (!(rtx.rxbd[rxIdx].status & RXBD_EMPTY)) {
|
while (!(rtx.rxbd[rxIdx].status & RXBD_EMPTY)) {
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ static int tsec_recv(struct eth_device *dev)
|
|||||||
static void tsec_halt(struct eth_device *dev)
|
static void tsec_halt(struct eth_device *dev)
|
||||||
{
|
{
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
|
|
||||||
clrbits_be32(®s->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
|
clrbits_be32(®s->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
|
||||||
setbits_be32(®s->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
|
setbits_be32(®s->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
|
||||||
@@ -473,7 +473,7 @@ static int tsec_init(struct eth_device *dev, bd_t * bd)
|
|||||||
char tmpbuf[MAC_ADDR_LEN];
|
char tmpbuf[MAC_ADDR_LEN];
|
||||||
int i;
|
int i;
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Make sure the controller is stopped */
|
/* Make sure the controller is stopped */
|
||||||
@@ -521,7 +521,7 @@ static int tsec_init(struct eth_device *dev, bd_t * bd)
|
|||||||
|
|
||||||
static phy_interface_t tsec_get_interface(struct tsec_private *priv)
|
static phy_interface_t tsec_get_interface(struct tsec_private *priv)
|
||||||
{
|
{
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
u32 ecntrl;
|
u32 ecntrl;
|
||||||
|
|
||||||
ecntrl = in_be32(®s->ecntrl);
|
ecntrl = in_be32(®s->ecntrl);
|
||||||
@@ -570,7 +570,7 @@ static int init_phy(struct eth_device *dev)
|
|||||||
{
|
{
|
||||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||||
struct phy_device *phydev;
|
struct phy_device *phydev;
|
||||||
tsec_t *regs = priv->regs;
|
struct tsec __iomem *regs = priv->regs;
|
||||||
u32 supported = (SUPPORTED_10baseT_Half |
|
u32 supported = (SUPPORTED_10baseT_Half |
|
||||||
SUPPORTED_10baseT_Full |
|
SUPPORTED_10baseT_Full |
|
||||||
SUPPORTED_100baseT_Half |
|
SUPPORTED_100baseT_Half |
|
||||||
@@ -677,7 +677,7 @@ int tsec_standard_init(bd_t *bis)
|
|||||||
{
|
{
|
||||||
struct fsl_pq_mdio_info info;
|
struct fsl_pq_mdio_info info;
|
||||||
|
|
||||||
info.regs = (struct tsec_mii_mng *)CONFIG_SYS_MDIO_BASE_ADDR;
|
info.regs = TSEC_GET_MDIO_REGS_BASE(1);
|
||||||
info.name = DEFAULT_MII_NAME;
|
info.name = DEFAULT_MII_NAME;
|
||||||
|
|
||||||
fsl_pq_mdio_init(bis, &info);
|
fsl_pq_mdio_init(bis, &info);
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
* terms of the GNU Public License, Version 2, incorporated
|
* terms of the GNU Public License, Version 2, incorporated
|
||||||
* herein by reference.
|
* herein by reference.
|
||||||
*
|
*
|
||||||
* Copyright 2004, 2007, 2009, 2011 Freescale Semiconductor, Inc.
|
* Copyright 2004, 2007, 2009, 2011, 2013 Freescale Semiconductor, Inc.
|
||||||
* (C) Copyright 2003, Motorola, Inc.
|
* (C) Copyright 2003, Motorola, Inc.
|
||||||
* maintained by Xianghua Xiao (x.xiao@motorola.com)
|
* maintained by Xianghua Xiao (x.xiao@motorola.com)
|
||||||
* author Andy Fleming
|
* author Andy Fleming
|
||||||
@@ -27,13 +27,26 @@
|
|||||||
|
|
||||||
#define CONFIG_SYS_MDIO_BASE_ADDR (MDIO_BASE_ADDR + 0x520)
|
#define CONFIG_SYS_MDIO_BASE_ADDR (MDIO_BASE_ADDR + 0x520)
|
||||||
|
|
||||||
|
#define TSEC_GET_REGS(num, offset) \
|
||||||
|
(struct tsec __iomem *)\
|
||||||
|
(TSEC_BASE_ADDR + (((num) - 1) * (offset)))
|
||||||
|
|
||||||
|
#define TSEC_GET_REGS_BASE(num) \
|
||||||
|
TSEC_GET_REGS((num), TSEC_SIZE)
|
||||||
|
|
||||||
|
#define TSEC_GET_MDIO_REGS(num, offset) \
|
||||||
|
(struct tsec_mii_mng __iomem *)\
|
||||||
|
(CONFIG_SYS_MDIO_BASE_ADDR + ((num) - 1) * (offset))
|
||||||
|
|
||||||
|
#define TSEC_GET_MDIO_REGS_BASE(num) \
|
||||||
|
TSEC_GET_MDIO_REGS((num), TSEC_MDIO_OFFSET)
|
||||||
|
|
||||||
#define DEFAULT_MII_NAME "FSL_MDIO"
|
#define DEFAULT_MII_NAME "FSL_MDIO"
|
||||||
|
|
||||||
#define STD_TSEC_INFO(num) \
|
#define STD_TSEC_INFO(num) \
|
||||||
{ \
|
{ \
|
||||||
.regs = (tsec_t *)(TSEC_BASE_ADDR + ((num - 1) * TSEC_SIZE)), \
|
.regs = TSEC_GET_REGS_BASE(num), \
|
||||||
.miiregs_sgmii = (struct tsec_mii_mng *)(CONFIG_SYS_MDIO_BASE_ADDR \
|
.miiregs_sgmii = TSEC_GET_MDIO_REGS_BASE(num), \
|
||||||
+ (num - 1) * TSEC_MDIO_OFFSET), \
|
|
||||||
.devname = CONFIG_TSEC##num##_NAME, \
|
.devname = CONFIG_TSEC##num##_NAME, \
|
||||||
.phyaddr = TSEC##num##_PHY_ADDR, \
|
.phyaddr = TSEC##num##_PHY_ADDR, \
|
||||||
.flags = TSEC##num##_FLAGS, \
|
.flags = TSEC##num##_FLAGS, \
|
||||||
@@ -42,9 +55,8 @@
|
|||||||
|
|
||||||
#define SET_STD_TSEC_INFO(x, num) \
|
#define SET_STD_TSEC_INFO(x, num) \
|
||||||
{ \
|
{ \
|
||||||
x.regs = (tsec_t *)(TSEC_BASE_ADDR + ((num - 1) * TSEC_SIZE)); \
|
x.regs = TSEC_GET_REGS_BASE(num); \
|
||||||
x.miiregs_sgmii = (struct tsec_mii_mng *)(CONFIG_SYS_MDIO_BASE_ADDR \
|
x.miiregs_sgmii = TSEC_GET_MDIO_REGS_BASE(num); \
|
||||||
+ (num - 1) * TSEC_MDIO_OFFSET); \
|
|
||||||
x.devname = CONFIG_TSEC##num##_NAME; \
|
x.devname = CONFIG_TSEC##num##_NAME; \
|
||||||
x.phyaddr = TSEC##num##_PHY_ADDR; \
|
x.phyaddr = TSEC##num##_PHY_ADDR; \
|
||||||
x.flags = TSEC##num##_FLAGS;\
|
x.flags = TSEC##num##_FLAGS;\
|
||||||
@@ -281,8 +293,7 @@ typedef struct tsec_hash_regs
|
|||||||
uint res2[24];
|
uint res2[24];
|
||||||
} tsec_hash_t;
|
} tsec_hash_t;
|
||||||
|
|
||||||
typedef struct tsec
|
struct tsec {
|
||||||
{
|
|
||||||
/* General Control and Status Registers (0x2_n000) */
|
/* General Control and Status Registers (0x2_n000) */
|
||||||
uint res000[4];
|
uint res000[4];
|
||||||
|
|
||||||
@@ -374,7 +385,7 @@ typedef struct tsec
|
|||||||
|
|
||||||
/* TSEC Future Expansion Space (0x2_nc00-0x2_nffc) */
|
/* TSEC Future Expansion Space (0x2_nc00-0x2_nffc) */
|
||||||
uint resc00[256];
|
uint resc00[256];
|
||||||
} tsec_t;
|
};
|
||||||
|
|
||||||
#define TSEC_GIGABIT (1 << 0)
|
#define TSEC_GIGABIT (1 << 0)
|
||||||
|
|
||||||
@@ -383,8 +394,8 @@ typedef struct tsec
|
|||||||
#define TSEC_SGMII (1 << 2) /* MAC-PHY interface uses SGMII */
|
#define TSEC_SGMII (1 << 2) /* MAC-PHY interface uses SGMII */
|
||||||
|
|
||||||
struct tsec_private {
|
struct tsec_private {
|
||||||
tsec_t *regs;
|
struct tsec __iomem *regs;
|
||||||
struct tsec_mii_mng *phyregs_sgmii;
|
struct tsec_mii_mng __iomem *phyregs_sgmii;
|
||||||
struct phy_device *phydev;
|
struct phy_device *phydev;
|
||||||
phy_interface_t interface;
|
phy_interface_t interface;
|
||||||
struct mii_dev *bus;
|
struct mii_dev *bus;
|
||||||
@@ -394,8 +405,8 @@ struct tsec_private {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct tsec_info_struct {
|
struct tsec_info_struct {
|
||||||
tsec_t *regs;
|
struct tsec __iomem *regs;
|
||||||
struct tsec_mii_mng *miiregs_sgmii;
|
struct tsec_mii_mng __iomem *miiregs_sgmii;
|
||||||
char *devname;
|
char *devname;
|
||||||
char *mii_devname;
|
char *mii_devname;
|
||||||
phy_interface_t interface;
|
phy_interface_t interface;
|
||||||
|
Reference in New Issue
Block a user