Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 1679
b: refs/heads/master
c: aa8f0dc
h: refs/heads/master
i:
  1677: d31888c
  1675: 216f6c0
  1671: 2c670bb
  1663: a5bf8ac
v: v3
  • Loading branch information
Jeff Garzik committed May 27, 2005
1 parent 042bc53 commit 0aac8d3
Show file tree
Hide file tree
Showing 86 changed files with 4,175 additions and 14,078 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: 87507cfdd2cde397c9da8f6e7ec23b2b47ec53d6
refs/heads/master: aa8f0dc6c3dbf1cf3ff58f3e945c981be134814d
2 changes: 1 addition & 1 deletion trunk/arch/i386/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1163,7 +1163,7 @@ config PCI_DIRECT

config PCI_MMCONFIG
bool
depends on PCI && ACPI && (PCI_GOMMCONFIG || PCI_GOANY)
depends on PCI && (PCI_GOMMCONFIG || (PCI_GOANY && ACPI))
select ACPI_BOOT
default y

Expand Down
5 changes: 5 additions & 0 deletions trunk/arch/i386/pci/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -1029,6 +1029,7 @@ void pcibios_penalize_isa_irq(int irq)
static int pirq_enable_irq(struct pci_dev *dev)
{
u8 pin;
extern int via_interrupt_line_quirk;
struct pci_dev *temp_dev;

pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
Expand Down Expand Up @@ -1083,6 +1084,10 @@ static int pirq_enable_irq(struct pci_dev *dev)
printk(KERN_WARNING "PCI: No IRQ known for interrupt pin %c of device %s.%s\n",
'A' + pin, pci_name(dev), msg);
}
/* VIA bridges use interrupt line for apic/pci steering across
the V-Link */
else if (via_interrupt_line_quirk)
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq & 15);
return 0;
}

Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/x86_64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ config PCI_DIRECT

config PCI_MMCONFIG
bool "Support mmconfig PCI config space access"
depends on PCI && ACPI
depends on PCI
select ACPI_BOOT

config UNORDERED_IO
Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/acpi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ config ACPI
available at:
<http://www.acpi.info>

if ACPI

config ACPI_BOOT
bool
depends on ACPI || X86_HT
default y

if ACPI

config ACPI_INTERPRETER
bool
depends on !IA64_SGI_SN
Expand Down
4 changes: 4 additions & 0 deletions trunk/drivers/acpi/pci_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ acpi_pci_irq_enable (
u8 pin = 0;
int edge_level = ACPI_LEVEL_SENSITIVE;
int active_high_low = ACPI_ACTIVE_LOW;
extern int via_interrupt_line_quirk;
char *link = NULL;

ACPI_FUNCTION_TRACE("acpi_pci_irq_enable");
Expand Down Expand Up @@ -443,6 +444,9 @@ acpi_pci_irq_enable (
}
}

if (via_interrupt_line_quirk)
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq & 15);

dev->irq = acpi_register_gsi(irq, edge_level, active_high_low);

printk(KERN_INFO PREFIX "PCI Interrupt %s[%c] -> ",
Expand Down
52 changes: 30 additions & 22 deletions trunk/drivers/ide/ide-cd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1932,11 +1932,8 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)

/*
* check if dma is safe
*
* NOTE! The "len" and "addr" checks should possibly have
* separate masks.
*/
if ((rq->data_len & mask) || (addr & mask))
if ((rq->data_len & 3) || (addr & mask))
info->dma = 0;
}

Expand Down Expand Up @@ -3258,12 +3255,16 @@ sector_t ide_cdrom_capacity (ide_drive_t *drive)
return capacity * sectors_per_frame;
}

static int ide_cd_remove(struct device *dev)
static
int ide_cdrom_cleanup(ide_drive_t *drive)
{
ide_drive_t *drive = to_ide_device(dev);
struct cdrom_info *info = drive->driver_data;

ide_unregister_subdriver(drive, info->driver);
if (ide_unregister_subdriver(drive)) {
printk(KERN_ERR "%s: %s: failed to ide_unregister_subdriver\n",
__FUNCTION__, drive->name);
return 1;
}

del_gendisk(info->disk);

Expand Down Expand Up @@ -3296,7 +3297,7 @@ static void ide_cd_release(struct kref *kref)
kfree(info);
}

static int ide_cd_probe(struct device *);
static int ide_cdrom_attach (ide_drive_t *drive);

#ifdef CONFIG_PROC_FS
static int proc_idecd_read_capacity
Expand All @@ -3319,20 +3320,19 @@ static ide_proc_entry_t idecd_proc[] = {

static ide_driver_t ide_cdrom_driver = {
.owner = THIS_MODULE,
.gen_driver = {
.name = "ide-cdrom",
.bus = &ide_bus_type,
.probe = ide_cd_probe,
.remove = ide_cd_remove,
},
.name = "ide-cdrom",
.version = IDECD_VERSION,
.media = ide_cdrom,
.busy = 0,
.supports_dsc_overlap = 1,
.cleanup = ide_cdrom_cleanup,
.do_request = ide_do_rw_cdrom,
.end_request = ide_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idecd_proc,
.attach = ide_cdrom_attach,
.drives = LIST_HEAD_INIT(ide_cdrom_driver.drives),
};

static int idecd_open(struct inode * inode, struct file * file)
Expand Down Expand Up @@ -3418,9 +3418,8 @@ static char *ignore = NULL;
module_param(ignore, charp, 0400);
MODULE_DESCRIPTION("ATAPI CD-ROM Driver");

static int ide_cd_probe(struct device *dev)
static int ide_cdrom_attach (ide_drive_t *drive)
{
ide_drive_t *drive = to_ide_device(dev);
struct cdrom_info *info;
struct gendisk *g;
struct request_sense sense;
Expand Down Expand Up @@ -3454,8 +3453,11 @@ static int ide_cd_probe(struct device *dev)

ide_init_disk(g, drive);

ide_register_subdriver(drive, &ide_cdrom_driver);

if (ide_register_subdriver(drive, &ide_cdrom_driver)) {
printk(KERN_ERR "%s: Failed to register the driver with ide.c\n",
drive->name);
goto out_put_disk;
}
memset(info, 0, sizeof (struct cdrom_info));

kref_init(&info->kref);
Expand All @@ -3468,14 +3470,16 @@ static int ide_cd_probe(struct device *dev)

drive->driver_data = info;

DRIVER(drive)->busy++;
g->minors = 1;
snprintf(g->devfs_name, sizeof(g->devfs_name),
"%s/cd", drive->devfs_name);
g->driverfs_dev = &drive->gendev;
g->flags = GENHD_FL_CD | GENHD_FL_REMOVABLE;
if (ide_cdrom_setup(drive)) {
struct cdrom_device_info *devinfo = &info->devinfo;
ide_unregister_subdriver(drive, &ide_cdrom_driver);
DRIVER(drive)->busy--;
ide_unregister_subdriver(drive);
if (info->buffer != NULL)
kfree(info->buffer);
if (info->toc != NULL)
Expand All @@ -3488,27 +3492,31 @@ static int ide_cd_probe(struct device *dev)
drive->driver_data = NULL;
goto failed;
}
DRIVER(drive)->busy--;

cdrom_read_toc(drive, &sense);
g->fops = &idecd_ops;
g->flags |= GENHD_FL_REMOVABLE;
add_disk(g);
return 0;

out_put_disk:
put_disk(g);
out_free_cd:
kfree(info);
failed:
return -ENODEV;
return 1;
}

static void __exit ide_cdrom_exit(void)
{
driver_unregister(&ide_cdrom_driver.gen_driver);
ide_unregister_driver(&ide_cdrom_driver);
}

static int ide_cdrom_init(void)
{
return driver_register(&ide_cdrom_driver.gen_driver);
ide_register_driver(&ide_cdrom_driver);
return 0;
}

module_init(ide_cdrom_init);
Expand Down
41 changes: 24 additions & 17 deletions trunk/drivers/ide/ide-disk.c
Original file line number Diff line number Diff line change
Expand Up @@ -1024,16 +1024,14 @@ static void ide_cacheflush_p(ide_drive_t *drive)
printk(KERN_INFO "%s: wcache flush failed!\n", drive->name);
}

static int ide_disk_remove(struct device *dev)
static int idedisk_cleanup (ide_drive_t *drive)
{
ide_drive_t *drive = to_ide_device(dev);
struct ide_disk_obj *idkp = drive->driver_data;
struct gendisk *g = idkp->disk;

ide_cacheflush_p(drive);

ide_unregister_subdriver(drive, idkp->driver);

if (ide_unregister_subdriver(drive))
return 1;
del_gendisk(g);

ide_disk_put(idkp);
Expand All @@ -1054,7 +1052,7 @@ static void ide_disk_release(struct kref *kref)
kfree(idkp);
}

static int ide_disk_probe(struct device *dev);
static int idedisk_attach(ide_drive_t *drive);

static void ide_device_shutdown(struct device *dev)
{
Expand Down Expand Up @@ -1084,23 +1082,27 @@ static void ide_device_shutdown(struct device *dev)
dev->bus->suspend(dev, PMSG_SUSPEND);
}

/*
* IDE subdriver functions, registered with ide.c
*/
static ide_driver_t idedisk_driver = {
.owner = THIS_MODULE,
.gen_driver = {
.name = "ide-disk",
.bus = &ide_bus_type,
.probe = ide_disk_probe,
.remove = ide_disk_remove,
.shutdown = ide_device_shutdown,
},
.name = "ide-disk",
.version = IDEDISK_VERSION,
.media = ide_disk,
.busy = 0,
.supports_dsc_overlap = 0,
.cleanup = idedisk_cleanup,
.do_request = ide_do_rw_disk,
.end_request = ide_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idedisk_proc,
.attach = idedisk_attach,
.drives = LIST_HEAD_INIT(idedisk_driver.drives),
};

static int idedisk_open(struct inode *inode, struct file *filp)
Expand Down Expand Up @@ -1197,9 +1199,8 @@ static struct block_device_operations idedisk_ops = {

MODULE_DESCRIPTION("ATA DISK Driver");

static int ide_disk_probe(struct device *dev)
static int idedisk_attach(ide_drive_t *drive)
{
ide_drive_t *drive = to_ide_device(dev);
struct ide_disk_obj *idkp;
struct gendisk *g;

Expand All @@ -1221,7 +1222,10 @@ static int ide_disk_probe(struct device *dev)

ide_init_disk(g, drive);

ide_register_subdriver(drive, &idedisk_driver);
if (ide_register_subdriver(drive, &idedisk_driver)) {
printk (KERN_ERR "ide-disk: %s: Failed to register the driver with ide.c\n", drive->name);
goto out_put_disk;
}

memset(idkp, 0, sizeof(*idkp));

Expand All @@ -1235,14 +1239,15 @@ static int ide_disk_probe(struct device *dev)

drive->driver_data = idkp;

DRIVER(drive)->busy++;
idedisk_setup(drive);
if ((!drive->head || drive->head > 16) && !drive->select.b.lba) {
printk(KERN_ERR "%s: INVALID GEOMETRY: %d PHYSICAL HEADS?\n",
drive->name, drive->head);
drive->attach = 0;
} else
drive->attach = 1;

DRIVER(drive)->busy--;
g->minors = 1 << PARTN_BITS;
strcpy(g->devfs_name, drive->devfs_name);
g->driverfs_dev = &drive->gendev;
Expand All @@ -1252,20 +1257,22 @@ static int ide_disk_probe(struct device *dev)
add_disk(g);
return 0;

out_put_disk:
put_disk(g);
out_free_idkp:
kfree(idkp);
failed:
return -ENODEV;
return 1;
}

static void __exit idedisk_exit (void)
{
driver_unregister(&idedisk_driver.gen_driver);
ide_unregister_driver(&idedisk_driver);
}

static int idedisk_init (void)
{
return driver_register(&idedisk_driver.gen_driver);
return ide_register_driver(&idedisk_driver);
}

module_init(idedisk_init);
Expand Down
Loading

0 comments on commit 0aac8d3

Please sign in to comment.