On 04/17/2016 09:48 AM, Beniamino Galvani wrote: > All members of the DMA descriptor must be 32-bit, even on 64-bit > architectures: change the type to u32 to ensure this. Also, fix > other warnings. > > Signed-off-by: Beniamino Galvani <b.galv...@gmail.com> > --- > drivers/net/designware.c | 59 > ++++++++++++++++++++++++++---------------------- > drivers/net/designware.h | 4 ++-- > 2 files changed, 34 insertions(+), 29 deletions(-) > > diff --git a/drivers/net/designware.c b/drivers/net/designware.c > index ca58f34..2eda461 100644 > --- a/drivers/net/designware.c > +++ b/drivers/net/designware.c > @@ -98,8 +98,8 @@ static void tx_descs_init(struct dw_eth_dev *priv) > > for (idx = 0; idx < CONFIG_TX_DESCR_NUM; idx++) { > desc_p = &desc_table_p[idx]; > - desc_p->dmamac_addr = &txbuffs[idx * CONFIG_ETH_BUFSIZE]; > - desc_p->dmamac_next = &desc_table_p[idx + 1]; > + desc_p->dmamac_addr = (ulong)&txbuffs[idx * CONFIG_ETH_BUFSIZE]; > + desc_p->dmamac_next = (ulong)&desc_table_p[idx + 1];
Why don't you use u32 instead of ulong ? The u32 is well defined. DTTO all over the place. btw just curious, but what will happen if the descriptors get allocated in area above 4GiB ? Will the code silently corrupt memory by discarding the top bits in the descriptor pointer? [...] > diff --git a/drivers/net/designware.h b/drivers/net/designware.h > index ed6344c..d48df7b 100644 > --- a/drivers/net/designware.h > +++ b/drivers/net/designware.h > @@ -110,8 +110,8 @@ struct eth_dma_regs { > struct dmamacdescr { > u32 txrx_status; > u32 dmamac_cntl; > - void *dmamac_addr; > - struct dmamacdescr *dmamac_next; > + u32 dmamac_addr; > + u32 dmamac_next; > } __aligned(ARCH_DMA_MINALIGN); > > /* > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot