Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 93627
b: refs/heads/master
c: 3b36f66
h: refs/heads/master
i:
  93625: 1897bd9
  93623: 2b6af8f
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Apr 26, 2008
1 parent 2f7d6f8 commit 62b31b0
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 107 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e53cd458d593c88247b8a7b2754d0e8055869670
refs/heads/master: 3b36f66b81bc0d69ec7dfa736592224f6ca366b7
32 changes: 32 additions & 0 deletions trunk/drivers/ide/ide-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -1633,3 +1633,35 @@ void ide_port_scan(ide_hwif_t *hwif)
ide_proc_port_register_devices(hwif);
}
EXPORT_SYMBOL_GPL(ide_port_scan);

int ide_legacy_device_add(const struct ide_port_info *d)
{
ide_hwif_t *hwif, *mate;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw[2];

memset(&hw, 0, sizeof(hw));

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;

hwif = ide_find_port();
if (hwif) {
ide_init_port_hw(hwif, &hw[0]);
idx[0] = hwif->index;
}

mate = ide_find_port();
if (mate) {
ide_init_port_hw(mate, &hw[1]);
idx[1] = mate->index;
}

ide_device_add(idx, d);

return 0;
}
EXPORT_SYMBOL_GPL(ide_legacy_device_add);
28 changes: 1 addition & 27 deletions trunk/drivers/ide/legacy/ali14xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,6 @@ static const struct ide_port_info ali14xx_port_info = {

static int __init ali14xx_probe(void)
{
ide_hwif_t *hwif, *mate;
static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw[2];

printk(KERN_DEBUG "ali14xx: base=0x%03x, regOn=0x%02x.\n",
basePort, regOn);

Expand All @@ -218,29 +214,7 @@ static int __init ali14xx_probe(void)
return 1;
}

memset(&hw, 0, sizeof(hw));

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;

hwif = ide_find_port();
if (hwif) {
ide_init_port_hw(hwif, &hw[0]);
idx[0] = hwif->index;
}

mate = ide_find_port();
if (mate) {
ide_init_port_hw(mate, &hw[1]);
idx[1] = mate->index;
}

ide_device_add(idx, &ali14xx_port_info);

return 0;
return ide_legacy_device_add(&ali14xx_port_info);
}

int probe_ali14xx;
Expand Down
27 changes: 1 addition & 26 deletions trunk/drivers/ide/legacy/dtc2278.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,6 @@ static const struct ide_port_info dtc2278_port_info __initdata = {
static int __init dtc2278_probe(void)
{
unsigned long flags;
ide_hwif_t *hwif, *mate;
static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw[2];

local_irq_save(flags);
/*
Expand All @@ -128,29 +125,7 @@ static int __init dtc2278_probe(void)
#endif
local_irq_restore(flags);

memset(&hw, 0, sizeof(hw));

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;

hwif = ide_find_port();
if (hwif) {
ide_init_port_hw(hwif, &hw[0]);
idx[0] = hwif->index;
}

mate = ide_find_port();
if (mate) {
ide_init_port_hw(mate, &hw[1]);
idx[1] = mate->index;
}

ide_device_add(idx, &dtc2278_port_info);

return 0;
return ide_legacy_device_add(&dtc2278_port_info);
}

int probe_dtc2278 = 0;
Expand Down
28 changes: 1 addition & 27 deletions trunk/drivers/ide/legacy/ht6560b.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,10 +346,6 @@ static const struct ide_port_info ht6560b_port_info __initdata = {

static int __init ht6560b_init(void)
{
ide_hwif_t *hwif, *mate;
static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw[2];

if (probe_ht6560b == 0)
return -ENODEV;

Expand All @@ -364,29 +360,7 @@ static int __init ht6560b_init(void)
goto release_region;
}

memset(&hw, 0, sizeof(hw));

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;

hwif = ide_find_port();
if (hwif) {
ide_init_port_hw(hwif, &hw[0]);
idx[0] = hwif->index;
}

mate = ide_find_port();
if (mate) {
ide_init_port_hw(mate, &hw[1]);
idx[1] = mate->index;
}

ide_device_add(idx, &ht6560b_port_info);

return 0;
return ide_legacy_device_add(&ht6560b_port_info);

release_region:
release_region(HT_CONFIG_PORT, 1);
Expand Down
27 changes: 1 addition & 26 deletions trunk/drivers/ide/legacy/umc8672.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,7 @@ static const struct ide_port_info umc8672_port_info __initdata = {

static int __init umc8672_probe(void)
{
ide_hwif_t *hwif, *mate;
unsigned long flags;
static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw[2];

if (!request_region(0x108, 2, "umc8672")) {
printk(KERN_ERR "umc8672: ports 0x108-0x109 already in use.\n");
Expand All @@ -155,29 +152,7 @@ static int __init umc8672_probe(void)
umc_set_speeds(current_speeds);
local_irq_restore(flags);

memset(&hw, 0, sizeof(hw));

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;

hwif = ide_find_port();
if (hwif) {
ide_init_port_hw(hwif, &hw[0]);
idx[0] = hwif->index;
}

mate = ide_find_port();
if (mate) {
ide_init_port_hw(mate, &hw[1]);
idx[1] = mate->index;
}

ide_device_add(idx, &umc8672_port_info);

return 0;
return ide_legacy_device_add(&umc8672_port_info);
}

int probe_umc8672;
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/ide.h
Original file line number Diff line number Diff line change
Expand Up @@ -1213,6 +1213,7 @@ void ide_undecoded_slave(ide_drive_t *);

int ide_device_add_all(u8 *idx, const struct ide_port_info *);
int ide_device_add(u8 idx[4], const struct ide_port_info *);
int ide_legacy_device_add(const struct ide_port_info *);
void ide_port_unregister_devices(ide_hwif_t *);
void ide_port_scan(ide_hwif_t *);

Expand Down

0 comments on commit 62b31b0

Please sign in to comment.