Commit e5b48ee3 authored by Damien Le Moal's avatar Damien Le Moal
Browse files

ata: sata_fsl: fix scsi host initialization



When compiling with W=1, the sata_fsl driver compilation throws the
warning:

drivers/ata/sata_fsl.c:1385:22: error: initialized field overwritten
[-Werror=override-init]
 1385 |         .can_queue = SATA_FSL_QUEUE_DEPTH,

This is due to the driver scsi host template initialization overwriting
the can_queue field that is already set using the ATA_NCQ_SHT()
initializer macro, resulting in the same field being initialized twice
in the host template declaration.

To remove this warning, introduce the ATA_SUBBASE_SHT_QD() and
ATA_NCQ_SHT_QD() initialization macros to allow specifying a queue depth
different from the default ATA_DEF_QUEUE using an additional argument to
the macro.

Signed-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
parent a3d11c27
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1380,8 +1380,7 @@ static void sata_fsl_host_stop(struct ata_host *host)
 * scsi mid-layer and libata interface structures
 */
static struct scsi_host_template sata_fsl_sht = {
	ATA_NCQ_SHT("sata_fsl"),
	.can_queue = SATA_FSL_QUEUE_DEPTH,
	ATA_NCQ_SHT_QD("sata_fsl", SATA_FSL_QUEUE_DEPTH),
	.sg_tablesize = SATA_FSL_MAX_PRD_USABLE,
	.dma_boundary = ATA_DMA_BOUNDARY,
};
+11 −0
Original line number Diff line number Diff line
@@ -1385,6 +1385,12 @@ extern const struct attribute_group *ata_common_sdev_groups[];
	.tag_alloc_policy	= BLK_TAG_ALLOC_RR,		\
	.slave_configure	= ata_scsi_slave_config

#define ATA_SUBBASE_SHT_QD(drv_name, drv_qd)			\
	__ATA_BASE_SHT(drv_name),				\
	.can_queue		= drv_qd,			\
	.tag_alloc_policy	= BLK_TAG_ALLOC_RR,		\
	.slave_configure	= ata_scsi_slave_config

#define ATA_BASE_SHT(drv_name)					\
	ATA_SUBBASE_SHT(drv_name),				\
	.sdev_groups		= ata_common_sdev_groups
@@ -1396,6 +1402,11 @@ extern const struct attribute_group *ata_ncq_sdev_groups[];
	ATA_SUBBASE_SHT(drv_name),				\
	.sdev_groups		= ata_ncq_sdev_groups,		\
	.change_queue_depth	= ata_scsi_change_queue_depth

#define ATA_NCQ_SHT_QD(drv_name, drv_qd)			\
	ATA_SUBBASE_SHT_QD(drv_name, drv_qd),			\
	.sdev_groups		= ata_ncq_sdev_groups,		\
	.change_queue_depth	= ata_scsi_change_queue_depth
#endif

/*