Merge remote branch 'origin' into secretlab/next-devicetree
Merging in current state of Linus' tree to deal with merge conflicts and build failures in vio.c after merge. Conflicts: drivers/i2c/busses/i2c-cpm.c drivers/i2c/busses/i2c-mpc.c drivers/net/gianfar.c Also fixed up one line in arch/powerpc/kernel/vio.c to use the correct node pointer. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
@@ -65,8 +65,7 @@ MODULE_LICENSE("Dual MPL/GPL");
|
||||
typedef struct ide_info_t {
|
||||
struct pcmcia_device *p_dev;
|
||||
struct ide_host *host;
|
||||
int ndev;
|
||||
dev_node_t node;
|
||||
int ndev;
|
||||
} ide_info_t;
|
||||
|
||||
static void ide_release(struct pcmcia_device *);
|
||||
@@ -102,7 +101,6 @@ static int ide_probe(struct pcmcia_device *link)
|
||||
link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
|
||||
link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
|
||||
link->io.IOAddrLines = 3;
|
||||
link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
|
||||
link->conf.Attributes = CONF_ENABLE_IRQ;
|
||||
link->conf.IntType = INT_MEMORY_AND_IO;
|
||||
|
||||
@@ -285,8 +283,7 @@ static int ide_config(struct pcmcia_device *link)
|
||||
io_base = link->io.BasePort1;
|
||||
ctl_base = stk->ctl_base;
|
||||
|
||||
ret = pcmcia_request_irq(link, &link->irq);
|
||||
if (ret)
|
||||
if (!link->irq)
|
||||
goto failed;
|
||||
ret = pcmcia_request_configuration(link, &link->conf);
|
||||
if (ret)
|
||||
@@ -299,24 +296,21 @@ static int ide_config(struct pcmcia_device *link)
|
||||
if (is_kme)
|
||||
outb(0x81, ctl_base+1);
|
||||
|
||||
host = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link);
|
||||
host = idecs_register(io_base, ctl_base, link->irq, link);
|
||||
if (host == NULL && link->io.NumPorts1 == 0x20) {
|
||||
outb(0x02, ctl_base + 0x10);
|
||||
host = idecs_register(io_base + 0x10, ctl_base + 0x10,
|
||||
link->irq.AssignedIRQ, link);
|
||||
link->irq, link);
|
||||
}
|
||||
|
||||
if (host == NULL)
|
||||
goto failed;
|
||||
|
||||
info->ndev = 1;
|
||||
sprintf(info->node.dev_name, "hd%c", 'a' + host->ports[0]->index * 2);
|
||||
info->node.major = host->ports[0]->major;
|
||||
info->node.minor = 0;
|
||||
info->host = host;
|
||||
link->dev_node = &info->node;
|
||||
printk(KERN_INFO "ide-cs: %s: Vpp = %d.%d\n",
|
||||
info->node.dev_name, link->conf.Vpp / 10, link->conf.Vpp % 10);
|
||||
dev_info(&link->dev, "ide-cs: hd%c: Vpp = %d.%d\n",
|
||||
'a' + host->ports[0]->index * 2,
|
||||
link->conf.Vpp / 10, link->conf.Vpp % 10);
|
||||
|
||||
kfree(stk);
|
||||
return 0;
|
||||
@@ -409,6 +403,8 @@ static struct pcmcia_device_id ide_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID12("Hyperstone", "Model1", 0x3d5b9ef5, 0xca6ab420),
|
||||
PCMCIA_DEVICE_PROD_ID12("IBM", "microdrive", 0xb569a6e5, 0xa6d76178),
|
||||
PCMCIA_DEVICE_PROD_ID12("IBM", "IBM17JSSFP20", 0xb569a6e5, 0xf2508753),
|
||||
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF CARD 1GB", 0x2e6d1829, 0x55d5bffb),
|
||||
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF CARD 4GB", 0x2e6d1829, 0x531e7d10),
|
||||
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF8GB", 0x2e6d1829, 0xacbe682e),
|
||||
PCMCIA_DEVICE_PROD_ID12("IO DATA", "CBIDE2 ", 0x547e66dc, 0x8671043b),
|
||||
PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
|
||||
@@ -429,6 +425,8 @@ static struct pcmcia_device_id ide_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1),
|
||||
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2),
|
||||
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
|
||||
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF133", 0x709b1bf1, 0x7558f133),
|
||||
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS8GCF133", 0x709b1bf1, 0xb2f89b47),
|
||||
PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
|
||||
PCMCIA_DEVICE_PROD_ID12("WEIDA", "TWTTI", 0xcc7cf69c, 0x212bb918),
|
||||
PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
|
||||
|
@@ -407,32 +407,24 @@ static int ide_disk_get_capacity(ide_drive_t *drive)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u64 ide_disk_set_capacity(ide_drive_t *drive, u64 capacity)
|
||||
static void ide_disk_unlock_native_capacity(ide_drive_t *drive)
|
||||
{
|
||||
u64 set = min(capacity, drive->probed_capacity);
|
||||
u16 *id = drive->id;
|
||||
int lba48 = ata_id_lba48_enabled(id);
|
||||
|
||||
if ((drive->dev_flags & IDE_DFLAG_LBA) == 0 ||
|
||||
ata_id_hpa_enabled(id) == 0)
|
||||
goto out;
|
||||
return;
|
||||
|
||||
/*
|
||||
* according to the spec the SET MAX ADDRESS command shall be
|
||||
* immediately preceded by a READ NATIVE MAX ADDRESS command
|
||||
*/
|
||||
capacity = ide_disk_hpa_get_native_capacity(drive, lba48);
|
||||
if (capacity == 0)
|
||||
goto out;
|
||||
if (!ide_disk_hpa_get_native_capacity(drive, lba48))
|
||||
return;
|
||||
|
||||
set = ide_disk_hpa_set_capacity(drive, set, lba48);
|
||||
if (set) {
|
||||
/* needed for ->resume to disable HPA */
|
||||
drive->dev_flags |= IDE_DFLAG_NOHPA;
|
||||
return set;
|
||||
}
|
||||
out:
|
||||
return drive->capacity64;
|
||||
if (ide_disk_hpa_set_capacity(drive, drive->probed_capacity, lba48))
|
||||
drive->dev_flags |= IDE_DFLAG_NOHPA; /* disable HPA on resume */
|
||||
}
|
||||
|
||||
static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
|
||||
@@ -783,13 +775,13 @@ static int ide_disk_set_doorlock(ide_drive_t *drive, struct gendisk *disk,
|
||||
}
|
||||
|
||||
const struct ide_disk_ops ide_ata_disk_ops = {
|
||||
.check = ide_disk_check,
|
||||
.set_capacity = ide_disk_set_capacity,
|
||||
.get_capacity = ide_disk_get_capacity,
|
||||
.setup = ide_disk_setup,
|
||||
.flush = ide_disk_flush,
|
||||
.init_media = ide_disk_init_media,
|
||||
.set_doorlock = ide_disk_set_doorlock,
|
||||
.do_request = ide_do_rw_disk,
|
||||
.ioctl = ide_disk_ioctl,
|
||||
.check = ide_disk_check,
|
||||
.unlock_native_capacity = ide_disk_unlock_native_capacity,
|
||||
.get_capacity = ide_disk_get_capacity,
|
||||
.setup = ide_disk_setup,
|
||||
.flush = ide_disk_flush,
|
||||
.init_media = ide_disk_init_media,
|
||||
.set_doorlock = ide_disk_set_doorlock,
|
||||
.do_request = ide_do_rw_disk,
|
||||
.ioctl = ide_disk_ioctl,
|
||||
};
|
||||
|
@@ -288,17 +288,14 @@ static int ide_gd_media_changed(struct gendisk *disk)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static unsigned long long ide_gd_set_capacity(struct gendisk *disk,
|
||||
unsigned long long capacity)
|
||||
static void ide_gd_unlock_native_capacity(struct gendisk *disk)
|
||||
{
|
||||
struct ide_disk_obj *idkp = ide_drv_g(disk, ide_disk_obj);
|
||||
ide_drive_t *drive = idkp->drive;
|
||||
const struct ide_disk_ops *disk_ops = drive->disk_ops;
|
||||
|
||||
if (disk_ops->set_capacity)
|
||||
return disk_ops->set_capacity(drive, capacity);
|
||||
|
||||
return drive->capacity64;
|
||||
if (disk_ops->unlock_native_capacity)
|
||||
disk_ops->unlock_native_capacity(drive);
|
||||
}
|
||||
|
||||
static int ide_gd_revalidate_disk(struct gendisk *disk)
|
||||
@@ -329,7 +326,7 @@ static const struct block_device_operations ide_gd_ops = {
|
||||
.locked_ioctl = ide_gd_ioctl,
|
||||
.getgeo = ide_gd_getgeo,
|
||||
.media_changed = ide_gd_media_changed,
|
||||
.set_capacity = ide_gd_set_capacity,
|
||||
.unlock_native_capacity = ide_gd_unlock_native_capacity,
|
||||
.revalidate_disk = ide_gd_revalidate_disk
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user