All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 19/23] net: fec: fix build warnings for 64bits support
Date: Thu, 7 Dec 2017 09:42:49 +0100	[thread overview]
Message-ID: <c22f4fb0-4492-f100-f786-53a080477cbe@denx.de> (raw)
In-Reply-To: <20171204043136.17167-20-peng.fan@nxp.com>

On 04/12/2017 05:31, Peng Fan wrote:
> When building for 64bits system, we get some warnings about type
> cast between pointer and integer. This patch eliminates the warnings
> by using ulong/long type which is 32bits on 32bits system or 64bits on
> 64bits system.
> 
> Signed-off-by: Ye Li <ye.li@nxp.com>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> Cc: Joe Hershberger <joe.hershberger@ni.com>
> ---
>  drivers/net/fec_mxc.c | 74 ++++++++++++++++++++++++++++++---------------------
>  1 file changed, 43 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
> index 4cbc8cbbfd..ff7ad91116 100644
> --- a/drivers/net/fec_mxc.c
> +++ b/drivers/net/fec_mxc.c
> @@ -284,7 +284,7 @@ static int fec_tx_task_disable(struct fec_priv *fec)
>  static void fec_rbd_init(struct fec_priv *fec, int count, int dsize)
>  {
>  	uint32_t size;
> -	uint8_t *data;
> +	ulong data;
>  	int i;
>  
>  	/*
> @@ -293,9 +293,9 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize)
>  	 */
>  	size = roundup(dsize, ARCH_DMA_MINALIGN);
>  	for (i = 0; i < count; i++) {
> -		data = (uint8_t *)fec->rbd_base[i].data_pointer;
> -		memset(data, 0, dsize);
> -		flush_dcache_range((uint32_t)data, (uint32_t)data + size);
> +		data = fec->rbd_base[i].data_pointer;
> +		memset((void *)data, 0, dsize);
> +		flush_dcache_range(data, data + size);
>  
>  		fec->rbd_base[i].status = FEC_RBD_EMPTY;
>  		fec->rbd_base[i].data_length = 0;
> @@ -305,8 +305,8 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize)
>  	fec->rbd_base[i - 1].status = FEC_RBD_WRAP | FEC_RBD_EMPTY;
>  	fec->rbd_index = 0;
>  
> -	flush_dcache_range((unsigned)fec->rbd_base,
> -			   (unsigned)fec->rbd_base + size);
> +	flush_dcache_range((ulong)fec->rbd_base,
> +			   (ulong)fec->rbd_base + size);
>  }
>  
>  /**
> @@ -323,7 +323,7 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize)
>   */
>  static void fec_tbd_init(struct fec_priv *fec)
>  {
> -	unsigned addr = (unsigned)fec->tbd_base;
> +	ulong addr = (ulong)fec->tbd_base;
>  	unsigned size = roundup(2 * sizeof(struct fec_bd),
>  				ARCH_DMA_MINALIGN);
>  
> @@ -423,7 +423,7 @@ static int fec_open(struct eth_device *edev)
>  	struct fec_priv *fec = (struct fec_priv *)edev->priv;
>  #endif
>  	int speed;
> -	uint32_t addr, size;
> +	ulong addr, size;
>  	int i;
>  
>  	debug("fec_open: fec_open(dev)\n");
> @@ -439,7 +439,7 @@ static int fec_open(struct eth_device *edev)
>  	/* Flush the descriptors into RAM */
>  	size = roundup(FEC_RBD_NUM * sizeof(struct fec_bd),
>  			ARCH_DMA_MINALIGN);
> -	addr = (uint32_t)fec->rbd_base;
> +	addr = (ulong)fec->rbd_base;
>  	flush_dcache_range(addr, addr + size);
>  
>  #ifdef FEC_QUIRK_ENET_MAC
> @@ -533,8 +533,9 @@ static int fec_init(struct eth_device *dev, bd_t *bd)
>  #else
>  	struct fec_priv *fec = (struct fec_priv *)dev->priv;
>  #endif
> -	uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop;
> -	int i;
> +	u8 *mib_ptr = (uint8_t *)&fec->eth->rmon_t_drop;
> +	u8 *i;
> +	ulong addr;
>  
>  	/* Initialize MAC address */
>  #ifdef CONFIG_DM_ETH
> @@ -574,8 +575,12 @@ static int fec_init(struct eth_device *dev, bd_t *bd)
>  
>  	/* size and address of each buffer */
>  	writel(FEC_MAX_PKT_SIZE, &fec->eth->emrbr);
> -	writel((uint32_t)fec->tbd_base, &fec->eth->etdsr);
> -	writel((uint32_t)fec->rbd_base, &fec->eth->erdsr);
> +
> +	addr = (ulong)fec->tbd_base;
> +	writel((uint32_t)addr, &fec->eth->etdsr);
> +
> +	addr = (ulong)fec->rbd_base;
> +	writel((uint32_t)addr, &fec->eth->erdsr);
>  
>  #ifndef CONFIG_PHYLIB
>  	if (fec->xcv_type != SEVENWIRE)
> @@ -640,8 +645,8 @@ static int fec_send(struct eth_device *dev, void *packet, int length)
>  #endif
>  {
>  	unsigned int status;
> -	uint32_t size, end;
> -	uint32_t addr;
> +	u32 size;
> +	ulong addr, end;
>  	int timeout = FEC_XFER_TIMEOUT;
>  	int ret = 0;
>  
> @@ -672,13 +677,13 @@ static int fec_send(struct eth_device *dev, void *packet, int length)
>  	swap_packet((uint32_t *)packet, length);
>  #endif
>  
> -	addr = (uint32_t)packet;
> +	addr = (ulong)packet;
>  	end = roundup(addr + length, ARCH_DMA_MINALIGN);
>  	addr &= ~(ARCH_DMA_MINALIGN - 1);
>  	flush_dcache_range(addr, end);
>  
>  	writew(length, &fec->tbd_base[fec->tbd_index].data_length);
> -	writel(addr, &fec->tbd_base[fec->tbd_index].data_pointer);
> +	writel((uint32_t)addr, &fec->tbd_base[fec->tbd_index].data_pointer);
>  
>  	/*
>  	 * update BD's status now
> @@ -698,7 +703,7 @@ static int fec_send(struct eth_device *dev, void *packet, int length)
>  	 * can start DMA.
>  	 */
>  	size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN);
> -	addr = (uint32_t)fec->tbd_base;
> +	addr = (ulong)fec->tbd_base;
>  	flush_dcache_range(addr, addr + size);
>  
>  	/*
> @@ -799,7 +804,7 @@ static int fec_recv(struct eth_device *dev)
>  	unsigned long ievent;
>  	int frame_length, len = 0;
>  	uint16_t bd_status;
> -	uint32_t addr, size, end;
> +	ulong addr, size, end;
>  	int i;
>  	ALLOC_CACHE_ALIGN_BUFFER(uchar, buff, FEC_MAX_PKT_SIZE);
>  
> @@ -854,7 +859,7 @@ static int fec_recv(struct eth_device *dev)
>  	 * the descriptor. The solution is to mark the whole cache line when all
>  	 * descriptors in the cache line are processed.
>  	 */
> -	addr = (uint32_t)rbd;
> +	addr = (ulong)rbd;
>  	addr &= ~(ARCH_DMA_MINALIGN - 1);
>  	size = roundup(sizeof(struct fec_bd), ARCH_DMA_MINALIGN);
>  	invalidate_dcache_range(addr, addr + size);
> @@ -882,8 +887,8 @@ static int fec_recv(struct eth_device *dev)
>  			len = frame_length;
>  		} else {
>  			if (bd_status & FEC_RBD_ERR)
> -				debug("error frame: 0x%08x 0x%08x\n",
> -				       addr, bd_status);
> +				debug("error frame: 0x%08lx 0x%08x\n",
> +				      addr, bd_status);
>  		}
>  
>  		/*
> @@ -895,7 +900,7 @@ static int fec_recv(struct eth_device *dev)
>  		size = RXDESC_PER_CACHELINE - 1;
>  		if ((fec->rbd_index & size) == size) {
>  			i = fec->rbd_index - size;
> -			addr = (uint32_t)&fec->rbd_base[i];
> +			addr = (ulong)&fec->rbd_base[i];
>  			for (; i <= fec->rbd_index ; i++) {
>  				fec_rbd_clean(i == (FEC_RBD_NUM - 1),
>  					      &fec->rbd_base[i]);
> @@ -922,6 +927,7 @@ static int fec_alloc_descs(struct fec_priv *fec)
>  	unsigned int size;
>  	int i;
>  	uint8_t *data;
> +	ulong addr;
>  
>  	/* Allocate TX descriptors. */
>  	size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN);
> @@ -950,11 +956,12 @@ static int fec_alloc_descs(struct fec_priv *fec)
>  
>  		memset(data, 0, size);
>  
> -		fec->rbd_base[i].data_pointer = (uint32_t)data;
> +		addr = (ulong)data;
> +		fec->rbd_base[i].data_pointer = (uint32_t)addr;
>  		fec->rbd_base[i].status = FEC_RBD_EMPTY;
>  		fec->rbd_base[i].data_length = 0;
>  		/* Flush the buffer to memory. */
> -		flush_dcache_range((uint32_t)data, (uint32_t)data + size);
> +		flush_dcache_range(addr, addr + size);
>  	}
>  
>  	/* Mark the last RBD to close the ring. */
> @@ -966,8 +973,10 @@ static int fec_alloc_descs(struct fec_priv *fec)
>  	return 0;
>  
>  err_ring:
> -	for (; i >= 0; i--)
> -		free((void *)fec->rbd_base[i].data_pointer);
> +	for (; i >= 0; i--) {
> +		addr = fec->rbd_base[i].data_pointer;
> +		free((void *)addr);
> +	}
>  	free(fec->rbd_base);
>  err_rx:
>  	free(fec->tbd_base);
> @@ -978,9 +987,12 @@ err_tx:
>  static void fec_free_descs(struct fec_priv *fec)
>  {
>  	int i;
> +	ulong addr;
>  
> -	for (i = 0; i < FEC_RBD_NUM; i++)
> -		free((void *)fec->rbd_base[i].data_pointer);
> +	for (i = 0; i < FEC_RBD_NUM; i++) {
> +		addr = fec->rbd_base[i].data_pointer;
> +		free((void *)addr);
> +	}
>  	free(fec->rbd_base);
>  	free(fec->tbd_base);
>  }
> @@ -995,7 +1007,7 @@ struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id)
>  	struct fec_priv *priv = dev_get_priv(dev);
>  	struct ethernet_regs *eth = priv->eth;
>  #else
> -	struct ethernet_regs *eth = (struct ethernet_regs *)base_addr;
> +	struct ethernet_regs *eth = (struct ethernet_regs *)(ulong)base_addr;
>  #endif
>  	struct mii_dev *bus;
>  	int ret;
> @@ -1065,7 +1077,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr,
>  	edev->halt = fec_halt;
>  	edev->write_hwaddr = fec_set_hwaddr;
>  
> -	fec->eth = (struct ethernet_regs *)base_addr;
> +	fec->eth = (struct ethernet_regs *)(ulong)base_addr;
>  	fec->bd = bd;
>  
>  	fec->xcv_type = CONFIG_FEC_XCV_TYPE;
> 

Reviewed-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

  parent reply	other threads:[~2017-12-07  8:42 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-04  4:31 [U-Boot] [PATCH V2 00/23] imx: add i.MX8M support and i.MX8MQ EVK Peng Fan
2017-12-04  4:31 ` [U-Boot] [PATCH V2 01/23] imx: add i.MX8M into Kconfig Peng Fan
2017-12-16 17:16   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 02/23] imx: mx8m: add register definition header file Peng Fan
2017-12-16 17:17   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 03/23] imx: mx8m: add pin " Peng Fan
2017-12-16 17:18   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 04/23] imx: mx8m: add clock driver Peng Fan
2017-12-16 17:33   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 05/23] imx: add sip function Peng Fan
2017-12-16 17:35   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 06/23] imx: boot_mode: add USB_BOOT entry Peng Fan
2017-12-16 17:35   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 07/23] power: pmic.h: include dm/ofnode.h Peng Fan
2017-12-16 17:35   ` Fabio Estevam
2017-12-17 10:32   ` Stefano Babic
2017-12-04  4:31 ` [U-Boot] [PATCH V2 08/23] imx: cpu: update cpu file to support i.MX8M Peng Fan
2017-12-07  8:40   ` Stefano Babic
2017-12-16 17:36   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 09/23] imx: spl: implement spl_boot_device for i.MX8M Peng Fan
2017-12-16 17:36   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 10/23] imx: add i.MX8MQ SoC Revision and is_mx8m helper Peng Fan
2017-12-16 17:37   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 11/23] imx: add pad settings bit definition for i.MX8M Peng Fan
2017-12-16 17:38   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 12/23] imx: mx8m: add soc related settings and files Peng Fan
2017-12-07  8:39   ` Stefano Babic
2017-12-07  9:06     ` Peng Fan
2017-12-04  4:31 ` [U-Boot] [PATCH V2 13/23] imx: makefile: compile files for i.MX8M Peng Fan
2017-12-16 17:39   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 14/23] misc: ocotp: add i.MX8M support Peng Fan
2017-12-07  8:41   ` Stefano Babic
2017-12-16 17:40   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 15/23] mmc: fsl_esdhc: support i.MX8M Peng Fan
2017-12-07  8:41   ` Stefano Babic
2017-12-16 17:40   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 16/23] imx: lcdif: include i.MX8M Peng Fan
2017-12-07  8:41   ` Stefano Babic
2017-12-16 17:41   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 17/23] gpio: mxc: add i.MX8M support Peng Fan
2017-12-16 17:41   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 18/23] net: fec: do not access reserved register for i.MX8M Peng Fan
     [not found]   ` <CANr=Z=Z6ekzYT3+YG7nXWKedQc_3tS42_BAbkqnP8A8Qpij5Pg@mail.gmail.com>
2017-12-05 20:36     ` Joe Hershberger
2017-12-07  8:42   ` Stefano Babic
2017-12-16 17:41   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 19/23] net: fec: fix build warnings for 64bits support Peng Fan
2017-12-05 20:37   ` Joe Hershberger
2017-12-07  8:42   ` Stefano Babic [this message]
2017-12-16 17:43   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 20/23] power: pmic/regulator allow dm be omitted by SPL Peng Fan
2017-12-07  8:43   ` Stefano Babic
2017-12-16 17:43   ` Fabio Estevam
2017-12-17 10:33   ` Stefano Babic
2017-12-04  4:31 ` [U-Boot] [PATCH V2 21/23] imx: imx8mq: add dtsi file Peng Fan
2017-12-16 17:44   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 22/23] imx: add i.MX8MQ EVK support Peng Fan
2017-12-07  8:52   ` Stefano Babic
2017-12-07  9:13     ` Peng Fan
2017-12-07  9:27       ` Stefano Babic
2017-12-07  9:59         ` Peng Fan
2017-12-07  9:28       ` Stefano Babic
2017-12-16 17:51   ` Fabio Estevam
2017-12-04  4:31 ` [U-Boot] [PATCH V2 23/23] Add DDR settings Peng Fan
2017-12-04 17:48   ` Dr. Philipp Tomsich
2017-12-07  7:31     ` Peng Fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c22f4fb0-4492-f100-f786-53a080477cbe@denx.de \
    --to=sbabic@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.