* [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms
@ 2015-07-07 7:48 Yuantian.Tang at freescale.com
2015-07-07 11:20 ` Albert ARIBAUD
2015-07-09 1:47 ` [U-Boot] [U-Boot, " Tom Rini
0 siblings, 2 replies; 5+ messages in thread
From: Yuantian.Tang at freescale.com @ 2015-07-07 7:48 UTC (permalink / raw)
To: u-boot
From: Tang Yuantian <Yuantian.Tang@freescale.com>
When compling under 64bit platforms, there are lots of warnings,
like:
drivers/block/ahci.c:114:18: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
^
drivers/block/ahci.c: In function ?.hci_host_init?.
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);
......
Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
---
v2:
- refined some type casts
drivers/block/ahci.c | 57 +++++++++++++++++++++++++++-------------------------
include/ahci.h | 8 ++++----
2 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 4fb846a..2f76af5 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -43,13 +43,13 @@ u16 *ataid[AHCI_MAX_PORTS];
#define WAIT_MS_FLUSH 5000
#define WAIT_MS_LINKUP 200
-static inline u32 ahci_port_base(u32 base, u32 port)
+static inline void __iomem *ahci_port_base(void __iomem *base, u32 port)
{
return base + 0x100 + (port * 0x80);
}
-static void ahci_setup_port(struct ahci_ioports *port, unsigned long base,
+static void ahci_setup_port(struct ahci_ioports *port, void __iomem *base,
unsigned int port_idx)
{
base = ahci_port_base(base, port_idx);
@@ -61,7 +61,7 @@ static void ahci_setup_port(struct ahci_ioports *port, unsigned long base,
#define msleep(a) udelay(a * 1000)
-static void ahci_dcache_flush_range(unsigned begin, unsigned len)
+static void ahci_dcache_flush_range(unsigned long begin, unsigned long len)
{
const unsigned long start = begin;
const unsigned long end = start + len;
@@ -75,7 +75,7 @@ static void ahci_dcache_flush_range(unsigned begin, unsigned len)
* controller is invalidated from dcache; next access comes from
* physical RAM.
*/
-static void ahci_dcache_invalidate_range(unsigned begin, unsigned len)
+static void ahci_dcache_invalidate_range(unsigned long begin, unsigned long len)
{
const unsigned long start = begin;
const unsigned long end = start + len;
@@ -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(void __iomem *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;
+ void __iomem *port_mmio = 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(void __iomem *port_mmio)
{
clrsetbits_le32(port_mmio + PORT_P0DMACR, 0x0000ff00, 0x00004400);
}
@@ -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;
+ void __iomem *mmio = probe_ent->mmio_base;
u32 tmp, cap_save, cmd;
int i, j, ret;
- volatile u8 *port_mmio;
+ void __iomem *port_mmio;
u32 port_map;
debug("ahci_host_init: start\n");
@@ -215,9 +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);
+ probe_ent->port[i].port_mmio = ahci_port_base(mmio, i);
port_mmio = (u8 *) probe_ent->port[i].port_mmio;
- ahci_setup_port(&probe_ent->port[i], (unsigned long)mmio, i);
+ ahci_setup_port(&probe_ent->port[i], mmio, i);
/* make sure port is not active */
tmp = readl(port_mmio + PORT_CMD);
@@ -329,7 +329,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;
+ void __iomem *mmio = probe_ent->mmio_base;
u32 vers, cap, cap2, impl, speed;
const char *speed_s;
const char *scc_s;
@@ -462,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
@@ -489,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;
+ void __iomem *port_mmio = pp->port_mmio;
u32 cmd_fis_len = 5; /* five dwords */
u8 fis[20];
@@ -514,7 +514,7 @@ static void ahci_set_feature(u8 port)
}
#endif
-static int wait_spinup(volatile u8 *port_mmio)
+static int wait_spinup(void __iomem *port_mmio)
{
ulong start;
u32 tf_data;
@@ -532,9 +532,9 @@ static int wait_spinup(volatile u8 *port_mmio)
static int ahci_port_start(u8 port)
{
struct ahci_ioports *pp = &(probe_ent->port[port]);
- volatile u8 *port_mmio = (volatile u8 *)pp->port_mmio;
+ void __iomem *port_mmio = pp->port_mmio;
u32 port_status;
- u32 mem;
+ void __iomem *mem;
debug("Enter start port: %d\n", port);
port_status = readl(port_mmio + PORT_SCR_STAT);
@@ -544,15 +544,16 @@ static int ahci_port_start(u8 port)
return -1;
}
- mem = (u32) malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
+ mem = malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
if (!mem) {
free(pp);
printf("%s: No mem for table!\n", __func__);
return -ENOMEM;
}
- mem = (mem + 0x800) & (~0x7ff); /* Aligned to 2048-bytes */
- memset((u8 *) mem, 0, AHCI_PORT_PRIV_DMA_SZ);
+ /* Aligned to 2048-bytes */
+ mem = memalign(2048, AHCI_PORT_PRIV_DMA_SZ);
+ memset(mem, 0, AHCI_PORT_PRIV_DMA_SZ);
/*
* First item in chunk of DMA memory: 32-slot command table,
@@ -560,7 +561,7 @@ static int ahci_port_start(u8 port)
*/
pp->cmd_slot =
(struct ahci_cmd_hdr *)(uintptr_t)virt_to_phys((void *)mem);
- debug("cmd_slot = 0x%x\n", (unsigned)pp->cmd_slot);
+ debug("cmd_slot = %p\n", pp->cmd_slot);
mem += (AHCI_CMD_SLOT_SZ + 224);
/*
@@ -574,13 +575,14 @@ static int ahci_port_start(u8 port)
* and its scatter-gather table
*/
pp->cmd_tbl = virt_to_phys((void *)mem);
- debug("cmd_tbl_dma = 0x%x\n", pp->cmd_tbl);
+ debug("cmd_tbl_dma = %lx\n", pp->cmd_tbl);
mem += AHCI_CMD_TBL_HDR;
pp->cmd_tbl_sg =
(struct ahci_sg *)(uintptr_t)virt_to_phys((void *)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);
@@ -607,7 +609,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;
+ void __iomem *port_mmio = pp->port_mmio;
u32 opts;
u32 port_status;
int sg_count;
@@ -632,7 +634,7 @@ static int ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,
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);
@@ -642,7 +644,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;
@@ -1026,7 +1029,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;
+ void __iomem *port_mmio = pp->port_mmio;
u32 cmd_fis_len = 5; /* five dwords */
/* Preset the FIS */
diff --git a/include/ahci.h b/include/ahci.h
index 6d91712..0bdedac 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -135,12 +135,12 @@ struct ahci_sg {
};
struct ahci_ioports {
- u32 cmd_addr;
- u32 scr_addr;
- u32 port_mmio;
+ void __iomem *cmd_addr;
+ void __iomem *scr_addr;
+ void __iomem *port_mmio;
struct ahci_cmd_hdr *cmd_slot;
struct ahci_sg *cmd_tbl_sg;
- u32 cmd_tbl;
+ ulong cmd_tbl;
u32 rx_fis;
};
--
2.1.0.27.g96db324
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms
2015-07-07 7:48 [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms Yuantian.Tang at freescale.com
@ 2015-07-07 11:20 ` Albert ARIBAUD
2015-07-08 2:42 ` Yuantian Tang
2015-07-09 1:47 ` [U-Boot] [U-Boot, " Tom Rini
1 sibling, 1 reply; 5+ messages in thread
From: Albert ARIBAUD @ 2015-07-07 11:20 UTC (permalink / raw)
To: u-boot
Hello Yuantian.Tang at freescale.com,
On Tue, 7 Jul 2015 15:48:26 +0800, Yuantian.Tang at freescale.com
<Yuantian.Tang@freescale.com> wrote:
> From: Tang Yuantian <Yuantian.Tang@freescale.com>
>
> When compling under 64bit platforms, there are lots of warnings,
> like:
>
> drivers/block/ahci.c:114:18: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]
> u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
> ^
> drivers/block/ahci.c: In function ?.hci_host_init?.
> 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);
>
> ......
>
> Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> ---
> v2:
> - refined some type casts
Out of curiosity, which toolchain are you using?
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms
2015-07-07 11:20 ` Albert ARIBAUD
@ 2015-07-08 2:42 ` Yuantian Tang
0 siblings, 0 replies; 5+ messages in thread
From: Yuantian Tang @ 2015-07-08 2:42 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Albert ARIBAUD [mailto:albert.u.boot at aribaud.net]
> Sent: Tuesday, July 07, 2015 7:20 PM
> To: Tang Yuantian-B29983
> Cc: trini at konsulko.com; Xie Shaohui-B21989; u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit
> platforms
>
> Hello Yuantian.Tang at freescale.com,
>
> On Tue, 7 Jul 2015 15:48:26 +0800, Yuantian.Tang at freescale.com
> <Yuantian.Tang@freescale.com> wrote:
> > From: Tang Yuantian <Yuantian.Tang@freescale.com>
> >
> > When compling under 64bit platforms, there are lots of warnings,
> > like:
> >
> > drivers/block/ahci.c:114:18: warning: cast to pointer from integer of
> > different size [-Wint-to-pointer-cast]
> > u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
> > ^
> > drivers/block/ahci.c: In function ?.hci_host_init?.
> > 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);
> >
> > ......
> >
> > Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> > ---
> > v2:
> > - refined some type casts
>
> Out of curiosity, which toolchain are you using?
>
ARCH=arm64
CROSS_COMPILE=gcc-linaro-aarch64-linux-gnu-4.8-2013.12_linux/bin/aarch64-linux-gnu-
I believe that any cross compile for arm64 will cause those warnings.
Regards,
Yuantian
> Amicalement,
> --
> Albert.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [U-Boot, v2] ahci: Fix compiling warnings under 64bit platforms
2015-07-07 7:48 [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms Yuantian.Tang at freescale.com
2015-07-07 11:20 ` Albert ARIBAUD
@ 2015-07-09 1:47 ` Tom Rini
2015-07-09 6:43 ` Yuantian Tang
1 sibling, 1 reply; 5+ messages in thread
From: Tom Rini @ 2015-07-09 1:47 UTC (permalink / raw)
To: u-boot
On Tue, Jul 07, 2015 at 03:48:26PM +0800, tang yuantian wrote:
> From: Tang Yuantian <Yuantian.Tang@freescale.com>
>
> When compling under 64bit platforms, there are lots of warnings,
> like:
>
> drivers/block/ahci.c:114:18: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]
> u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
> ^
> drivers/block/ahci.c: In function ?.hci_host_init?.
> 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);
>
> ......
>
> Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> ---
This introduces a warning with ELDK 5.5 on
nitrogen6q,novena,ot1200_spl,nitrogen6q2g,m53evk,mx6qsabrelite,udoo_quad,ima3-mx53,tb
s2910,cm_fx6,ot1200,gwventana,mx53loco:
../drivers/block/dwc_ahsata.c:169:32: warning: assignment makes pointer
from integer without a cast [enabled by default]
../drivers/block/dwc_ahsata.c: In function 'ahci_port_start':
../drivers/block/dwc_ahsata.c:523:2: warning: format '%x' expects
argument of type 'unsigned int', but argument 2 has type 'ulong'
[-Wformat=]
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150708/bd9f0481/attachment.sig>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [U-Boot, v2] ahci: Fix compiling warnings under 64bit platforms
2015-07-09 1:47 ` [U-Boot] [U-Boot, " Tom Rini
@ 2015-07-09 6:43 ` Yuantian Tang
0 siblings, 0 replies; 5+ messages in thread
From: Yuantian Tang @ 2015-07-09 6:43 UTC (permalink / raw)
To: u-boot
Thanks for pointing out. Fixed in patch v3.
Regards,
Yuantian
> -----Original Message-----
> From: Tom Rini [mailto:trini at konsulko.com]
> Sent: Thursday, July 09, 2015 9:48 AM
> To: Tang Yuantian-B29983
> Cc: Xie Shaohui-B21989; u-boot at lists.denx.de
> Subject: Re: [U-Boot,v2] ahci: Fix compiling warnings under 64bit platforms
>
> On Tue, Jul 07, 2015 at 03:48:26PM +0800, tang yuantian wrote:
>
> > From: Tang Yuantian <Yuantian.Tang@freescale.com>
> >
> > When compling under 64bit platforms, there are lots of warnings,
> > like:
> >
> > drivers/block/ahci.c:114:18: warning: cast to pointer from integer of
> > different size [-Wint-to-pointer-cast]
> > u8 *port_mmio = (u8 *)probe_ent->port[port].port_mmio;
> > ^
> > drivers/block/ahci.c: In function ?.hci_host_init?.
> > 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);
> >
> > ......
> >
> > Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> > ---
>
> This introduces a warning with ELDK 5.5 on
> nitrogen6q,novena,ot1200_spl,nitrogen6q2g,m53evk,mx6qsabrelite,udoo_q
> uad,ima3-mx53,tb
> s2910,cm_fx6,ot1200,gwventana,mx53loco:
>
> ../drivers/block/dwc_ahsata.c:169:32: warning: assignment makes pointer
> from integer without a cast [enabled by default]
> ../drivers/block/dwc_ahsata.c: In function 'ahci_port_start':
> ../drivers/block/dwc_ahsata.c:523:2: warning: format '%x' expects argument
> of type 'unsigned int', but argument 2 has type 'ulong'
> [-Wformat=]
>
> --
> Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-07-09 6:43 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-07 7:48 [U-Boot] [PATCH v2] ahci: Fix compiling warnings under 64bit platforms Yuantian.Tang at freescale.com
2015-07-07 11:20 ` Albert ARIBAUD
2015-07-08 2:42 ` Yuantian Tang
2015-07-09 1:47 ` [U-Boot] [U-Boot, " Tom Rini
2015-07-09 6:43 ` Yuantian Tang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox