You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (37 commits) MIPS: O32: Provide definition of registers ta0 .. ta3. MIPS: perf: Add Octeon support for hardware perf. MIPS: perf: Add support for 64-bit perf counters. MIPS: perf: Reorganize contents of perf support files. MIPS: perf: Cleanup formatting in arch/mips/kernel/perf_event.c MIPS: Add accessor macros for 64-bit performance counter registers. MIPS: Add probes for more Octeon II CPUs. MIPS: Add more CPU identifiers for Octeon II CPUs. MIPS: XLR, XLS: Add comment for smp setup MIPS: JZ4740: GPIO: Check correct IRQ in demux handler MIPS: JZ4740: GPIO: Simplify IRQ demuxer MIPS: JZ4740: Use generic irq chip MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines MIPS: Alchemy: kill au1xxx.h header MIPS: Alchemy: clean DMA code of CONFIG_SOC_AU1??? defines MIPS, IDE: Alchem, au1xxx-ide: Remove pb1200/db1200 header dep MIPS: Alchemy: Redo PCI as platform driver MIPS: Alchemy: more base address cleanup MIPS: Alchemy: rewrite USB platform setup. MIPS: Alchemy: abstract USB block control register access ... Fix up trivial conflicts in: arch/mips/alchemy/devboards/db1x00/platform.c drivers/ide/Kconfig drivers/mmc/host/au1xmmc.c drivers/video/Kconfig sound/mips/Kconfig
This commit is contained in:
+3
-3
@@ -677,19 +677,19 @@ config BLK_DEV_IDE_PMAC_ATA100FIRST
|
||||
|
||||
config BLK_DEV_IDE_AU1XXX
|
||||
bool "IDE for AMD Alchemy Au1200"
|
||||
depends on SOC_AU1200
|
||||
depends on MIPS_ALCHEMY
|
||||
select IDE_XFER_MODE
|
||||
choice
|
||||
prompt "IDE Mode for AMD Alchemy Au1200"
|
||||
default BLK_DEV_IDE_AU1XXX_PIO_DBDMA
|
||||
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
||||
depends on BLK_DEV_IDE_AU1XXX
|
||||
|
||||
config BLK_DEV_IDE_AU1XXX_PIO_DBDMA
|
||||
bool "PIO+DbDMA IDE for AMD Alchemy Au1200"
|
||||
|
||||
config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
|
||||
bool "MDMA2+DbDMA IDE for AMD Alchemy Au1200"
|
||||
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
||||
depends on BLK_DEV_IDE_AU1XXX
|
||||
endchoice
|
||||
|
||||
config BLK_DEV_IDE_TX4938
|
||||
|
||||
+27
-19
@@ -36,13 +36,17 @@
|
||||
#include <linux/ide.h>
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include <asm/mach-au1x00/au1xxx.h>
|
||||
#include <asm/mach-au1x00/au1000.h>
|
||||
#include <asm/mach-au1x00/au1xxx_dbdma.h>
|
||||
#include <asm/mach-au1x00/au1xxx_ide.h>
|
||||
|
||||
#define DRV_NAME "au1200-ide"
|
||||
#define DRV_AUTHOR "Enrico Walther <enrico.walther@amd.com> / Pete Popov <ppopov@embeddedalley.com>"
|
||||
|
||||
#ifndef IDE_REG_SHIFT
|
||||
#define IDE_REG_SHIFT 5
|
||||
#endif
|
||||
|
||||
/* enable the burstmode in the dbdma */
|
||||
#define IDE_AU1XXX_BURSTMODE 1
|
||||
|
||||
@@ -317,10 +321,11 @@ static void auide_ddma_rx_callback(int irq, void *param)
|
||||
}
|
||||
#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */
|
||||
|
||||
static void auide_init_dbdma_dev(dbdev_tab_t *dev, u32 dev_id, u32 tsize, u32 devwidth, u32 flags)
|
||||
static void auide_init_dbdma_dev(dbdev_tab_t *dev, u32 dev_id, u32 tsize,
|
||||
u32 devwidth, u32 flags, u32 regbase)
|
||||
{
|
||||
dev->dev_id = dev_id;
|
||||
dev->dev_physaddr = (u32)IDE_PHYS_ADDR;
|
||||
dev->dev_physaddr = CPHYSADDR(regbase);
|
||||
dev->dev_intlevel = 0;
|
||||
dev->dev_intpolarity = 0;
|
||||
dev->dev_tsize = tsize;
|
||||
@@ -344,7 +349,7 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
|
||||
dbdev_tab_t source_dev_tab, target_dev_tab;
|
||||
u32 dev_id, tsize, devwidth, flags;
|
||||
|
||||
dev_id = IDE_DDMA_REQ;
|
||||
dev_id = hwif->ddma_id;
|
||||
|
||||
tsize = 8; /* 1 */
|
||||
devwidth = 32; /* 16 */
|
||||
@@ -356,20 +361,17 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
|
||||
#endif
|
||||
|
||||
/* setup dev_tab for tx channel */
|
||||
auide_init_dbdma_dev( &source_dev_tab,
|
||||
dev_id,
|
||||
tsize, devwidth, DEV_FLAGS_OUT | flags);
|
||||
auide_init_dbdma_dev(&source_dev_tab, dev_id, tsize, devwidth,
|
||||
DEV_FLAGS_OUT | flags, auide->regbase);
|
||||
auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
|
||||
|
||||
auide_init_dbdma_dev( &source_dev_tab,
|
||||
dev_id,
|
||||
tsize, devwidth, DEV_FLAGS_IN | flags);
|
||||
auide_init_dbdma_dev(&source_dev_tab, dev_id, tsize, devwidth,
|
||||
DEV_FLAGS_IN | flags, auide->regbase);
|
||||
auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
|
||||
|
||||
/* We also need to add a target device for the DMA */
|
||||
auide_init_dbdma_dev( &target_dev_tab,
|
||||
(u32)DSCR_CMD0_ALWAYS,
|
||||
tsize, devwidth, DEV_FLAGS_ANYUSE);
|
||||
auide_init_dbdma_dev(&target_dev_tab, (u32)DSCR_CMD0_ALWAYS, tsize,
|
||||
devwidth, DEV_FLAGS_ANYUSE, auide->regbase);
|
||||
auide->target_dev_id = au1xxx_ddma_add_device(&target_dev_tab);
|
||||
|
||||
/* Get a channel for TX */
|
||||
@@ -411,14 +413,12 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
|
||||
#endif
|
||||
|
||||
/* setup dev_tab for tx channel */
|
||||
auide_init_dbdma_dev( &source_dev_tab,
|
||||
(u32)DSCR_CMD0_ALWAYS,
|
||||
8, 32, DEV_FLAGS_OUT | flags);
|
||||
auide_init_dbdma_dev(&source_dev_tab, (u32)DSCR_CMD0_ALWAYS, 8, 32,
|
||||
DEV_FLAGS_OUT | flags, auide->regbase);
|
||||
auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
|
||||
|
||||
auide_init_dbdma_dev( &source_dev_tab,
|
||||
(u32)DSCR_CMD0_ALWAYS,
|
||||
8, 32, DEV_FLAGS_IN | flags);
|
||||
auide_init_dbdma_dev(&source_dev_tab, (u32)DSCR_CMD0_ALWAYS, 8, 32,
|
||||
DEV_FLAGS_IN | flags, auide->regbase);
|
||||
auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
|
||||
|
||||
/* Get a channel for TX */
|
||||
@@ -540,6 +540,14 @@ static int au_ide_probe(struct platform_device *dev)
|
||||
goto out;
|
||||
}
|
||||
|
||||
res = platform_get_resource(dev, IORESOURCE_DMA, 0);
|
||||
if (!res) {
|
||||
pr_debug("%s: no DDMA ID resource\n", DRV_NAME);
|
||||
ret = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
ahwif->ddma_id = res->start;
|
||||
|
||||
memset(&hw, 0, sizeof(hw));
|
||||
auide_setup_ports(&hw, ahwif);
|
||||
hw.irq = ahwif->irq;
|
||||
|
||||
Reference in New Issue
Block a user