libata-sff: make BMDMA optional
Make BMDMA optional depending on new config variable CONFIG_ATA_BMDMA. In Kconfig, drivers are grouped into five groups - non-SFF native, SFF w/ custom DMA interface, SFF w/ BMDMA, PIO-only SFF, and generic fallback / legacy ones. Kconfig and Makefile are reorganized according to the groups and ordered alphabetically inside each group. ata_ioports.bmdma_addr and ata_port.bmdma_prd[_dma] are put into CONFIG_ATA_BMDMA, as are all bmdma related ops, variables and functions. This increase the binary size slightly when BMDMA is enabled but on both native-only and PIO-only configurations the size is slightly reduced. Either way, the size difference is insignificant. This change is more meaningful to signify the separation between SFF and BMDMA and as a tool to verify the separation. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
@@ -798,11 +798,15 @@ static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc)
|
||||
case ATAPI_PROT_NODATA:
|
||||
ap->hsm_task_state = HSM_ST_LAST;
|
||||
break;
|
||||
#ifdef CONFIG_ATA_BMDMA
|
||||
case ATAPI_PROT_DMA:
|
||||
ap->hsm_task_state = HSM_ST_LAST;
|
||||
/* initiate bmdma */
|
||||
ap->ops->bmdma_start(qc);
|
||||
break;
|
||||
#endif /* CONFIG_ATA_BMDMA */
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2535,6 +2539,12 @@ EXPORT_SYMBOL_GPL(ata_pci_sff_init_one);
|
||||
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
/*
|
||||
* BMDMA support
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ATA_BMDMA
|
||||
|
||||
const struct ata_port_operations ata_bmdma_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
|
||||
@@ -3287,6 +3297,7 @@ int ata_pci_bmdma_init_one(struct pci_dev *pdev,
|
||||
EXPORT_SYMBOL_GPL(ata_pci_bmdma_init_one);
|
||||
|
||||
#endif /* CONFIG_PCI */
|
||||
#endif /* CONFIG_ATA_BMDMA */
|
||||
|
||||
/**
|
||||
* ata_sff_port_init - Initialize SFF/BMDMA ATA port
|
||||
|
Reference in New Issue
Block a user