diff options
| author | galak <galak@ducky.am.freescale.net> | 2009-07-07 15:53:21 -0500 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2009-07-20 23:54:58 +0200 | 
| commit | f14d81050a9e0fa57aedb1bc746c60a07c1ad67f (patch) | |
| tree | 4d96f2b74ea264399679ba530290d7d9056d8107 | |
| parent | 20938e54a207472a090f04f20f30c9e32b14137e (diff) | |
| download | olio-uboot-2014.01-f14d81050a9e0fa57aedb1bc746c60a07c1ad67f.tar.xz olio-uboot-2014.01-f14d81050a9e0fa57aedb1bc746c60a07c1ad67f.zip | |
fsl_sata: Fix compiler warnings shown by gcc-4.4
Update fsl_sata to use common structures instead of casting
back and forth between the fsl specific ones and the common ones
(which are identical).
fsl_sata.c: In function 'scan_sata':
fsl_sata.c:550: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:549: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:548: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:545: note: initialized from here
fsl_sata.c:592: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:590: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:588: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:586: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
fsl_sata.c:579: warning: dereferencing pointer 'cfis' does break strict-aliasing rules
...
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
| -rw-r--r-- | drivers/block/fsl_sata.c | 54 | ||||
| -rw-r--r-- | drivers/block/fsl_sata.h | 46 | 
2 files changed, 19 insertions, 81 deletions
| diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c index 2009d1ecd..abcda6fb5 100644 --- a/drivers/block/fsl_sata.c +++ b/drivers/block/fsl_sata.c @@ -81,7 +81,7 @@ void dprint_buffer(unsigned char *buf, int len)  	printf("\n\r");  } -static void fsl_sata_dump_sfis(struct sfis *s) +static void fsl_sata_dump_sfis(struct sata_fis_d2h *s)  {  	printf("Status FIS dump:\n\r");  	printf("fis_type:		%02x\n\r", s->fis_type); @@ -347,7 +347,7 @@ static void fsl_sata_dump_regs(fsl_sata_reg_t *reg)  	printf("SYSPR:          %08x\n\r", in_be32(®->syspr));  } -static int fsl_ata_exec_ata_cmd(struct fsl_sata *sata, struct cfis *cfis, +static int fsl_ata_exec_ata_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis,  				int is_ncq, int tag, u8 *buffer, u32 len)  {  	cmd_hdr_entry_t *cmd_hdr; @@ -483,7 +483,7 @@ static int fsl_ata_exec_ata_cmd(struct fsl_sata *sata, struct cfis *cfis,  	if (val32) {  		u32 der; -		fsl_sata_dump_sfis((struct sfis *)cmd_desc->sfis); +		fsl_sata_dump_sfis((struct sata_fis_d2h *)cmd_desc->sfis);  		printf("CE at device\n\r");  		fsl_sata_dump_regs(reg);  		der = in_le32(®->der); @@ -498,13 +498,13 @@ static int fsl_ata_exec_ata_cmd(struct fsl_sata *sata, struct cfis *cfis,  	return len;  } -static int fsl_ata_exec_reset_cmd(struct fsl_sata *sata, struct cfis *cfis, +static int fsl_ata_exec_reset_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis,  				 int tag, u8 *buffer, u32 len)  {  	return 0;  } -static int fsl_sata_exec_cmd(struct fsl_sata *sata, struct cfis *cfis, +static int fsl_sata_exec_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis,  		 enum cmd_type command_type, int tag, u8 *buffer, u32 len)  {  	int rc; @@ -539,11 +539,9 @@ static int fsl_sata_exec_cmd(struct fsl_sata *sata, struct cfis *cfis,  static void fsl_sata_identify(int dev, u16 *id)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d; -	cfis = (struct cfis *)&h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -566,12 +564,10 @@ static void fsl_sata_xfer_mode(int dev, u16 *id)  static void fsl_sata_set_features(int dev)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d;  	u8 udma_cap; -	cfis = (struct cfis *)&h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -597,14 +593,12 @@ static void fsl_sata_set_features(int dev)  static u32 fsl_sata_rw_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d;  	u32 block;  	block = start; -	cfis = (struct cfis *)&h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -624,12 +618,9 @@ static u32 fsl_sata_rw_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_wr  void fsl_sata_flush_cache(int dev)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d; -	cfis = (struct cfis *)&h2d; - -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -641,14 +632,12 @@ void fsl_sata_flush_cache(int dev)  static u32 fsl_sata_rw_cmd_ext(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d;  	u64 block;  	block = (u64)start; -	cfis = (struct cfis *)&h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -673,8 +662,7 @@ static u32 fsl_sata_rw_cmd_ext(int dev, u32 start, u32 blkcnt, u8 *buffer, int i  u32 fsl_sata_rw_ncq_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; +	struct sata_fis_h2d h2d, *cfis = &h2d;  	int ncq_channel;  	u64 block; @@ -684,9 +672,8 @@ u32 fsl_sata_rw_ncq_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write  	}  	block = (u64)start; -	cfis = (struct cfis *)&h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ @@ -718,12 +705,9 @@ u32 fsl_sata_rw_ncq_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write  void fsl_sata_flush_cache_ext(int dev)  {  	fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; -	struct sata_fis_h2d h2d; -	struct cfis *cfis; - -	cfis = (struct cfis *)&h2d; +	struct sata_fis_h2d h2d, *cfis = &h2d; -	memset((void *)cfis, 0, sizeof(struct cfis)); +	memset(cfis, 0, sizeof(struct sata_fis_h2d));  	cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;  	cfis->pm_port_c = 0x80; /* is command */ diff --git a/drivers/block/fsl_sata.h b/drivers/block/fsl_sata.h index 874c0dc74..18e88fa4a 100644 --- a/drivers/block/fsl_sata.h +++ b/drivers/block/fsl_sata.h @@ -289,52 +289,6 @@ typedef struct cmd_desc {  #define SATA_HC_CMD_DESC_ALIGN		4  /* -* CFIS - Command FIS, which is H2D register FIS, the struct defination -* of Non-Queued command is different than NCQ command. see them is sata2.h -*/ -typedef struct cfis { -	u8 fis_type; -	u8 pm_port_c; -	u8 command; -	u8 features; -	u8 lba_low; -	u8 lba_mid; -	u8 lba_high; -	u8 device; -	u8 lba_low_exp; -	u8 lba_mid_exp; -	u8 lba_high_exp; -	u8 features_exp; -	u8 sector_count; -	u8 sector_count_exp; -	u8 res1; -	u8 control; -	u8 res2[4]; -} __attribute__ ((packed)) cfis_t; - -/* -* SFIS - Status FIS, which is D2H register FIS. -*/ -typedef struct sfis { -	u8 fis_type; -	u8 pm_port_i; -	u8 status; -	u8 error; -	u8 lba_low; -	u8 lba_mid; -	u8 lba_high; -	u8 device; -	u8 lba_low_exp; -	u8 lba_mid_exp; -	u8 lba_high_exp; -	u8 res1; -	u8 sector_count; -	u8 sector_count_exp; -	u8 res2[2]; -	u8 res3[4]; -} __attribute__ ((packed)) sfis_t; - -/*   * SATA device driver info   */  typedef struct fsl_sata_info { |