From: Shaohui Xie <shaohui....@freescale.com>

When compiling under 64 bit mode, there are warnings as below:

In file included from drivers/block/ahci.c:16:0:
drivers/block/ahci.c: In function 'ahci_reset':
./arch/arm/include/asm/io.h:72:28: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
 #define __arch_getl(a)   (*(volatile unsigned int *)(a))
                            ^
./arch/arm/include/asm/io.h:151:31: note: in expansion of macro
'__arch_getl'
 #define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; })
                               ^
drivers/block/ahci.c:144:12: note: in expansion of macro 'readl'
  u32 tmp = readl(host_ctl_reg); /* global controller reset */
            ^
./arch/arm/include/asm/io.h:77:29: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
 #define __arch_putl(v,a)  (*(volatile unsigned int *)(a) = (v))
                             ^
./arch/arm/include/asm/io.h:146:48: note: in expansion of macro
'__arch_putl'
 #define writel(v,c) ({ u32 __v = v; __iowmb(); __arch_putl(__v,c); __v;
})
                                                ^
drivers/block/ahci.c:28:37: note: in expansion of macro 'writel'
 #define writel_with_flush(a,b) do { writel(a,b); readl(b); } while (0)
                                     ^
drivers/block/ahci.c:147:3: note: in expansion of macro
'writel_with_flush'
   writel_with_flush(tmp | HOST_RESET, host_ctl_reg);
   ^
./arch/arm/include/asm/io.h:72:28: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
 #define __arch_getl(a)   (*(volatile unsigned int *)(a))
                            ^
./arch/arm/include/asm/io.h:151:31: note: in expansion of macro
'__arch_getl'
 #define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; })
                               ^
drivers/block/ahci.c:28:50: note: in expansion of macro 'readl'
 #define writel_with_flush(a,b) do { writel(a,b); readl(b); } while (0)
                                                  ^
drivers/block/ahci.c:147:3: note: in expansion of macro
'writel_with_flush'
   writel_with_flush(tmp | HOST_RESET, host_ctl_reg);
   ^
./arch/arm/include/asm/io.h:72:28: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
 #define __arch_getl(a)   (*(volatile unsigned int *)(a))
                            ^
./arch/arm/include/asm/io.h:151:31: note: in expansion of macro
'__arch_getl'
 #define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; })
                               ^
drivers/block/ahci.c:155:9: note: in expansion of macro 'readl'
   tmp = readl(host_ctl_reg);
         ^
drivers/block/ahci.c: In function 'ahci_host_init':
drivers/block/ahci.c:174:22: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  volatile u8 *mmio = (volatile u8 *)probe_ent->mmio_base;
                      ^
drivers/block/ahci.c:218:49: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
   probe_ent->port[i].port_mmio = ahci_port_base((u32) mmio, i);
                                                 ^
drivers/block/ahci.c:219:15: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
   port_mmio = (u8 *) probe_ent->port[i].port_mmio;
               ^
drivers/block/ahci.c: In function 'ahci_print_info':
drivers/block/ahci.c:332:22: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  volatile u8 *mmio = (volatile u8 *)probe_ent->mmio_base;
                      ^
In file included from ./arch/arm/include/asm/byteorder.h:29:0,
                 from include/compiler.h:125,
                 from include/image.h:19,
                 from include/common.h:82,
                 from drivers/block/ahci.c:10:
drivers/block/ahci.c: In function 'ahci_fill_sg':
drivers/block/ahci.c:464:19: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
       cpu_to_le32((u32) buf + i * MAX_DATA_BYTE_COUNT);
                   ^
include/linux/byteorder/little_endian.h:34:51: note: in definition of
macro '__cpu_to_le32'
 #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
                                                   ^
drivers/block/ahci.c:464:7: note: in expansion of macro 'cpu_to_le32'
       cpu_to_le32((u32) buf + i * MAX_DATA_BYTE_COUNT);
       ^
drivers/block/ahci.c: In function 'ahci_port_start':
drivers/block/ahci.c:520:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
                           ^
drivers/block/ahci.c:532:8: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
  mem = (u32) malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
        ^
drivers/block/ahci.c:540:9: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  memset((u8 *) mem, 0, AHCI_PORT_PRIV_DMA_SZ);
         ^
drivers/block/ahci.c:547:50: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
   (struct ahci_cmd_hdr *)(uintptr_t)virt_to_phys((void *)mem);
                                                  ^
In file included from drivers/block/ahci.c:10:0:
drivers/block/ahci.c:548:29: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
  debug("cmd_slot = 0x%x\n", (unsigned)pp->cmd_slot);
                             ^
include/common.h:109:26: note: in definition of macro 'debug_cond'
    printf(pr_fmt(fmt), ##args); \
                          ^
drivers/block/ahci.c:548:2: note: in expansion of macro 'debug'
  debug("cmd_slot = 0x%x\n", (unsigned)pp->cmd_slot);
  ^
drivers/block/ahci.c:554:28: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  pp->rx_fis = virt_to_phys((void *)mem);
                            ^
drivers/block/ahci.c:561:29: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  pp->cmd_tbl = virt_to_phys((void *)mem);
                             ^
drivers/block/ahci.c:566:46: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
    (struct ahci_sg *)(uintptr_t)virt_to_phys((void *)mem);
                                              ^
In file included from drivers/block/ahci.c:16:0:
drivers/block/ahci.c:568:20: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
  writel_with_flush((u32) pp->cmd_slot, port_mmio + PORT_LST_ADDR);
                    ^
./arch/arm/include/asm/io.h:146:34: note: in definition of macro
'writel'
 #define writel(v,c) ({ u32 __v = v; __iowmb(); __arch_putl(__v,c); __v;
})
                                  ^
drivers/block/ahci.c:568:2: note: in expansion of macro
'writel_with_flush'
  writel_with_flush((u32) pp->cmd_slot, port_mmio + PORT_LST_ADDR);
  ^
drivers/block/ahci.c: In function 'ahci_device_data_io':
drivers/block/ahci.c:591:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
                           ^
drivers/block/ahci.c:609:9: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  memcpy((unsigned char *)pp->cmd_tbl, fis, fis_len);
         ^
drivers/block/ahci.c:616:26: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
  ahci_dcache_flush_range((unsigned)buf, (unsigned)buf_len);
                          ^
drivers/block/ahci.c:626:31: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
  ahci_dcache_invalidate_range((unsigned)buf, (unsigned)buf_len);
                               ^
drivers/block/ahci.c: In function 'ata_io_flush':
drivers/block/ahci.c:990:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
                           ^
drivers/block/ahci.c:999:9: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
  memcpy((unsigned char *)pp->cmd_tbl, fis, 20);
         ^

Signed-off-by: Shaohui Xie <shaohui....@freescale.com>
---
 drivers/block/ahci.c | 57 ++++++++++++++++++++++++++++------------------------
 1 file changed, 31 insertions(+), 26 deletions(-)

diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 37d2d2a..5e85895 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -94,7 +94,7 @@ static void ahci_dcache_flush_sata_cmd(struct ahci_ioports 
*pp)
                                AHCI_PORT_PRIV_DMA_SZ);
 }
 
-static int waiting_for_cmd_completed(volatile u8 *offset,
+static int waiting_for_cmd_completed(u8 *offset,
                                     int timeout_msec,
                                     u32 sign)
 {
@@ -111,7 +111,7 @@ int __weak ahci_link_up(struct ahci_probe_ent *probe_ent, 
u8 port)
 {
        u32 tmp;
        int j = 0;
-       u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
+       u8 *port_mmio = (u8 *)(unsigned long)probe_ent->port[port].port_mmio;
 
        /*
         * Bring up SATA link.
@@ -131,7 +131,7 @@ int __weak ahci_link_up(struct ahci_probe_ent *probe_ent, 
u8 port)
 
 #ifdef CONFIG_SUNXI_AHCI
 /* The sunxi AHCI controller requires this undocumented setup */
-static void sunxi_dma_init(volatile u8 *port_mmio)
+static void sunxi_dma_init(u8 *port_mmio)
 {
        clrsetbits_le32(port_mmio + PORT_P0DMACR, 0x0000ff00, 0x00004400);
 }
@@ -140,7 +140,7 @@ static void sunxi_dma_init(volatile u8 *port_mmio)
 int ahci_reset(u32 base)
 {
        int i = 1000;
-       u32 host_ctl_reg = base + HOST_CTL;
+       u32 *host_ctl_reg = (u32 *)(unsigned long)(base + HOST_CTL);
        u32 tmp = readl(host_ctl_reg); /* global controller reset */
 
        if ((tmp & HOST_RESET) == 0)
@@ -171,10 +171,10 @@ static int ahci_host_init(struct ahci_probe_ent 
*probe_ent)
        u16 tmp16;
        unsigned short vendor;
 #endif
-       volatile u8 *mmio = (volatile u8 *)probe_ent->mmio_base;
+       u8 *mmio = (u8 *)(unsigned long)probe_ent->mmio_base;
        u32 tmp, cap_save, cmd;
        int i, j, ret;
-       volatile u8 *port_mmio;
+       u8 *port_mmio;
        u32 port_map;
 
        debug("ahci_host_init: start\n");
@@ -215,8 +215,9 @@ static int ahci_host_init(struct ahci_probe_ent *probe_ent)
        for (i = 0; i < probe_ent->n_ports; i++) {
                if (!(port_map & (1 << i)))
                        continue;
-               probe_ent->port[i].port_mmio = ahci_port_base((u32) mmio, i);
-               port_mmio = (u8 *) probe_ent->port[i].port_mmio;
+               probe_ent->port[i].port_mmio =
+                       ahci_port_base((unsigned long)mmio, i);
+               port_mmio = (u8 *)(unsigned long)probe_ent->port[i].port_mmio;
                ahci_setup_port(&probe_ent->port[i], (unsigned long)mmio, i);
 
                /* make sure port is not active */
@@ -329,7 +330,7 @@ static void ahci_print_info(struct ahci_probe_ent 
*probe_ent)
        pci_dev_t pdev = probe_ent->dev;
        u16 cc;
 #endif
-       volatile u8 *mmio = (volatile u8 *)probe_ent->mmio_base;
+       u8 *mmio = (u8 *)(unsigned long)probe_ent->mmio_base;
        u32 vers, cap, cap2, impl, speed;
        const char *speed_s;
        const char *scc_s;
@@ -461,7 +462,7 @@ static int ahci_fill_sg(u8 port, unsigned char *buf, int 
buf_len)
 
        for (i = 0; i < sg_count; i++) {
                ahci_sg->addr =
-                   cpu_to_le32((u32) buf + i * MAX_DATA_BYTE_COUNT);
+                   cpu_to_le32((unsigned long) buf + i * MAX_DATA_BYTE_COUNT);
                ahci_sg->addr_hi = 0;
                ahci_sg->flags_size = cpu_to_le32(0x3fffff &
                                          (buf_len < MAX_DATA_BYTE_COUNT
@@ -488,7 +489,7 @@ static void ahci_fill_cmd_slot(struct ahci_ioports *pp, u32 
opts)
 static void ahci_set_feature(u8 port)
 {
        struct ahci_ioports *pp = &(probe_ent->port[port]);
-       volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
+       u8 *port_mmio = (u8 *)pp->port_mmio;
        u32 cmd_fis_len = 5;    /* five dwords */
        u8 fis[20];
 
@@ -517,7 +518,7 @@ static void ahci_set_feature(u8 port)
 static int ahci_port_start(u8 port)
 {
        struct ahci_ioports *pp = &(probe_ent->port[port]);
-       volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
+       u8 *port_mmio = (u8 *)(unsigned long)pp->port_mmio;
        u32 port_status;
        u32 mem;
 
@@ -529,7 +530,7 @@ static int ahci_port_start(u8 port)
                return -1;
        }
 
-       mem = (u32) malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
+       mem = (unsigned long) malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
        if (!mem) {
                free(pp);
                printf("%s: No mem for table!\n", __func__);
@@ -537,35 +538,38 @@ static int ahci_port_start(u8 port)
        }
 
        mem = (mem + 0x800) & (~0x7ff); /* Aligned to 2048-bytes */
-       memset((u8 *) mem, 0, AHCI_PORT_PRIV_DMA_SZ);
+       memset((u8 *)(unsigned long)mem, 0, AHCI_PORT_PRIV_DMA_SZ);
 
        /*
         * First item in chunk of DMA memory: 32-slot command table,
         * 32 bytes each in size
         */
        pp->cmd_slot =
-               (struct ahci_cmd_hdr *)(uintptr_t)virt_to_phys((void *)mem);
-       debug("cmd_slot = 0x%x\n", (unsigned)pp->cmd_slot);
+               (struct ahci_cmd_hdr *)
+               (uintptr_t)virt_to_phys((void *)(unsigned long)mem);
+       debug("cmd_slot = 0x%x\n", (unsigned int)(unsigned long)pp->cmd_slot);
        mem += (AHCI_CMD_SLOT_SZ + 224);
 
        /*
         * Second item: Received-FIS area
         */
-       pp->rx_fis = virt_to_phys((void *)mem);
+       pp->rx_fis = virt_to_phys((void *)(unsigned long)mem);
        mem += AHCI_RX_FIS_SZ;
 
        /*
         * Third item: data area for storing a single command
         * and its scatter-gather table
         */
-       pp->cmd_tbl = virt_to_phys((void *)mem);
+       pp->cmd_tbl = virt_to_phys((void *)(unsigned long)mem);
        debug("cmd_tbl_dma = 0x%x\n", pp->cmd_tbl);
 
        mem += AHCI_CMD_TBL_HDR;
        pp->cmd_tbl_sg =
-                       (struct ahci_sg *)(uintptr_t)virt_to_phys((void *)mem);
+                       (struct ahci_sg *)
+                       (uintptr_t)virt_to_phys((void *)(unsigned long)mem);
 
-       writel_with_flush((u32) pp->cmd_slot, port_mmio + PORT_LST_ADDR);
+       writel_with_flush((unsigned long)pp->cmd_slot,
+                         port_mmio + PORT_LST_ADDR);
 
        writel_with_flush(pp->rx_fis, port_mmio + PORT_FIS_ADDR);
 
@@ -588,7 +592,7 @@ static int ahci_device_data_io(u8 port, u8 *fis, int 
fis_len, u8 *buf,
 {
 
        struct ahci_ioports *pp = &(probe_ent->port[port]);
-       volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
+       u8 *port_mmio = (u8 *)(unsigned long)pp->port_mmio;
        u32 opts;
        u32 port_status;
        int sg_count;
@@ -606,14 +610,14 @@ static int ahci_device_data_io(u8 port, u8 *fis, int 
fis_len, u8 *buf,
                return -1;
        }
 
-       memcpy((unsigned char *)pp->cmd_tbl, fis, fis_len);
+       memcpy((unsigned char *)(unsigned long)pp->cmd_tbl, fis, fis_len);
 
        sg_count = ahci_fill_sg(port, buf, buf_len);
        opts = (fis_len >> 2) | (sg_count << 16) | (is_write << 6);
        ahci_fill_cmd_slot(pp, opts);
 
        ahci_dcache_flush_sata_cmd(pp);
-       ahci_dcache_flush_range((unsigned)buf, (unsigned)buf_len);
+       ahci_dcache_flush_range((unsigned long)buf, (unsigned long)buf_len);
 
        writel_with_flush(1, port_mmio + PORT_CMD_ISSUE);
 
@@ -623,7 +627,8 @@ static int ahci_device_data_io(u8 port, u8 *fis, int 
fis_len, u8 *buf,
                return -1;
        }
 
-       ahci_dcache_invalidate_range((unsigned)buf, (unsigned)buf_len);
+       ahci_dcache_invalidate_range((unsigned long)buf,
+                                    (unsigned long)buf_len);
        debug("%s: %d byte transferred.\n", __func__, pp->cmd_slot->status);
 
        return 0;
@@ -987,7 +992,7 @@ static int ata_io_flush(u8 port)
 {
        u8 fis[20];
        struct ahci_ioports *pp = &(probe_ent->port[port]);
-       volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
+       u8 *port_mmio = (u8 *)(unsigned long)pp->port_mmio;
        u32 cmd_fis_len = 5;    /* five dwords */
 
        /* Preset the FIS */
@@ -996,7 +1001,7 @@ static int ata_io_flush(u8 port)
        fis[1] = 1 << 7;         /* Command FIS. */
        fis[2] = ATA_CMD_FLUSH_EXT;
 
-       memcpy((unsigned char *)pp->cmd_tbl, fis, 20);
+       memcpy((unsigned char *)(unsigned long)pp->cmd_tbl, fis, 20);
        ahci_fill_cmd_slot(pp, cmd_fis_len);
        writel_with_flush(1, port_mmio + PORT_CMD_ISSUE);
 
-- 
2.1.0.27.g96db324

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to