ide: do complete DMA setup in ->init_dma method (take 2)
* Make ide_hwif_setup_dma() return an error value. * Pass 'const struct ide_port_info *d' instead of 'unsigned long dmabase' to ->init_dma method and make it return an error value. * Rename ide_get_or_set_dma_base() to ide_pci_dma_base(), change ordering of its arguments and then export it. * Export ide_pci_set_master(). * Do complete DMA setup inside ->init_dma method and update ->init_dma users accordingly. * Sanitize code for DMA setup in ide_init_port(). v2: * Fix for CONFIG_BLK_DEV_IDEDMA_PCI=n configs (from Jiri Slaby <jirislaby@gmail.com>): Fix following compiler warning by returning EINVAL: In file included from ANYTHING-INCLUDING-IDE.H:45: include/linux/ide.h: In function ‘ide_hwif_setup_dma’: include/linux/ide.h:1022: warning: no return statement in function returning non-void Cc: Jiri Slaby <jirislaby@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
@@ -1007,10 +1007,15 @@ void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, u8
|
||||
void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
void ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *);
|
||||
int ide_pci_set_master(struct pci_dev *, const char *);
|
||||
unsigned long ide_pci_dma_base(ide_hwif_t *, const struct ide_port_info *);
|
||||
int ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *);
|
||||
#else
|
||||
static inline void ide_hwif_setup_dma(ide_hwif_t *hwif,
|
||||
const struct ide_port_info *d) { }
|
||||
static inline int ide_hwif_setup_dma(ide_hwif_t *hwif,
|
||||
const struct ide_port_info *d)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void default_hwif_iops(ide_hwif_t *);
|
||||
@@ -1103,7 +1108,8 @@ struct ide_port_info {
|
||||
unsigned int (*init_chipset)(struct pci_dev *, const char *);
|
||||
void (*init_iops)(ide_hwif_t *);
|
||||
void (*init_hwif)(ide_hwif_t *);
|
||||
void (*init_dma)(ide_hwif_t *, unsigned long);
|
||||
int (*init_dma)(ide_hwif_t *,
|
||||
const struct ide_port_info *);
|
||||
|
||||
const struct ide_port_ops *port_ops;
|
||||
|
||||
|
Reference in New Issue
Block a user