dma_addr_t is used to store any valid DMA address which might not
necessarily be the same size as host architecture's word size. Though
various typecasts in k3's dma and usb driver expect dma_addr_t to be the
same size as the word size.

This leads the compiler to throw a "cast from pointer to integer of
different size" warning when the condition is not met, for example when
enabling CONFIG_DMA_ADDR_T_64BIT for the R5 core.

Therefore this patch fixes the typecasts by using 'uintptr_t' as an
intermediary type which is guaranteed to be the same size as void* on
the host architecture. Thus, eliminating the compiler warning.

Signed-off-by: Anshul Dalal <ansh...@ti.com>
---
 drivers/dma/ti/k3-udma.c | 6 +++---
 drivers/usb/dwc3/ep0.c   | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index 723265ab2e5..01824310995 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -2327,7 +2327,7 @@ static int udma_send(struct dma *dma, void *src, size_t 
len, void *metadata)
 {
        struct udma_dev *ud = dev_get_priv(dma->dev);
        struct cppi5_host_desc_t *desc_tx;
-       dma_addr_t dma_src = (dma_addr_t)src;
+       dma_addr_t dma_src = (uintptr_t)src;
        struct ti_udma_drv_packet_data packet_data = { 0 };
        dma_addr_t paddr;
        struct udma_chan *uc;
@@ -2426,7 +2426,7 @@ static int udma_receive(struct dma *dma, void **dst, void 
*metadata)
 
        cppi5_desc_get_tags_ids(&desc_rx->hdr, &port_id, NULL);
 
-       *dst = (void *)buf_dma;
+       *dst = (void *)(uintptr_t)buf_dma;
        uc->num_rx_bufs--;
 
        return pkt_len;
@@ -2518,7 +2518,7 @@ int udma_prepare_rcv_buf(struct dma *dma, void *dst, 
size_t size)
 
        desc_num = uc->desc_rx_cur % UDMA_RX_DESC_NUM;
        desc_rx = uc->desc_rx + (desc_num * uc->config.hdesc_size);
-       dma_dst = (dma_addr_t)dst;
+       dma_dst = (uintptr_t)dst;
 
        cppi5_hdesc_reset_hbdesc(desc_rx);
 
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 531f0b522af..c656cbe25ce 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -380,7 +380,7 @@ static int dwc3_ep0_handle_status(struct dwc3 *dwc,
        dep = dwc->eps[0];
        dwc->ep0_usb_req.dep = dep;
        dwc->ep0_usb_req.request.length = sizeof(*response_pkt);
-       dwc->ep0_usb_req.request.buf = (void *)dwc->setup_buf_addr;
+       dwc->ep0_usb_req.request.buf = (void *)(uintptr_t)dwc->setup_buf_addr;
        dwc->ep0_usb_req.request.complete = dwc3_ep0_status_cmpl;
 
        return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
@@ -662,7 +662,7 @@ static int dwc3_ep0_set_sel(struct dwc3 *dwc, struct 
usb_ctrlrequest *ctrl)
        dep = dwc->eps[0];
        dwc->ep0_usb_req.dep = dep;
        dwc->ep0_usb_req.request.length = dep->endpoint.maxpacket;
-       dwc->ep0_usb_req.request.buf = (void *)dwc->setup_buf_addr;
+       dwc->ep0_usb_req.request.buf = (void *)(uintptr_t)dwc->setup_buf_addr;
        dwc->ep0_usb_req.request.complete = dwc3_ep0_set_sel_cmpl;
 
        return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
-- 
2.50.1

Reply via email to