forked from AndyLaiJS/SkyMelon-msm8939
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ide: add ide-4drives host driver (take 3)
CONFIG_BLK_DEV_4DRIVES deserves its own host driver: * Add drivers/ide/legacy/ide-4drives.c and move "4drives" support there. * Add ide-4drives.o in the link order after all other legacy host drivers enabled by "ide0=" options (they all are mutually exclusive). * Make ide-4drives host driver probe itself for IDE devices instead of indirectly depending on ide_generic host driver. * Add "probe" module parameter to ide-4drives and update documentation. v2: * s/paramater/parameter/ in ide.txt. (Noticed by Randy Dunlap) v3: * s/ide_4drives.probe/ide-4drives.probe/ in help entry. (Noticed by Sergei Shtylyov) Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
- Loading branch information
Showing
5 changed files
with
55 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/module.h> | ||
#include <linux/ide.h> | ||
|
||
int probe_4drives = 0; | ||
|
||
module_param_named(probe, probe_4drives, bool, 0); | ||
MODULE_PARM_DESC(probe, "probe for generic IDE chipset with 4 drives/port"); | ||
|
||
static int __init ide_4drives_init(void) | ||
{ | ||
ide_hwif_t *hwif, *mate; | ||
u8 idx[4] = { 0, 1, 0xff, 0xff }; | ||
|
||
if (probe_4drives == 0) | ||
return -ENODEV; | ||
|
||
hwif = &ide_hwifs[0]; | ||
mate = &ide_hwifs[1]; | ||
|
||
memcpy(mate->io_ports, hwif->io_ports, sizeof(hwif->io_ports)); | ||
|
||
mate->irq = hwif->irq; | ||
|
||
mate->chipset = hwif->chipset = ide_4drives; | ||
|
||
mate->drives[0].select.all ^= 0x20; | ||
mate->drives[1].select.all ^= 0x20; | ||
|
||
hwif->mate = mate; | ||
mate->mate = hwif; | ||
|
||
hwif->serialized = mate->serialized = 1; | ||
|
||
ide_device_add(idx, NULL); | ||
|
||
return 0; | ||
} | ||
|
||
module_init(ide_4drives_init); | ||
|
||
MODULE_AUTHOR("Bartlomiej Zolnierkiewicz"); | ||
MODULE_DESCRIPTION("generic IDE chipset with 4 drives/port support"); | ||
MODULE_LICENSE("GPL"); |