Skip to content

Commit

Permalink
Staging: phison: port code to work properly with latest libata
Browse files Browse the repository at this point in the history
This brings the driver up to modern times so that it can build and run
properly with the in-tree libata code.

Cc: Evan Ko <evan_ko@phison.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Apr 3, 2009
1 parent 3321020 commit 76d86df
Showing 1 changed file with 7 additions and 58 deletions.
65 changes: 7 additions & 58 deletions drivers/staging/phison/phison.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,81 +39,30 @@ static int phison_pre_reset(struct ata_link *link, unsigned long deadline)
return ret;
}

static void phison_error_handler(struct ata_port *ap)
{
dev_dbg(ap->dev, "phison_error_handler()\n");
return ata_bmdma_drive_eh(ap, phison_pre_reset,
ata_std_softreset, NULL,
ata_std_postreset);
}

static struct scsi_host_template phison_sht = {
.module = THIS_MODULE,
.name = DRV_NAME,
.ioctl = ata_scsi_ioctl,
.queuecommand = ata_scsi_queuecmd,
.can_queue = ATA_DEF_QUEUE,
.this_id = ATA_SHT_THIS_ID,
.sg_tablesize = LIBATA_MAX_PRD,
.cmd_per_lun = ATA_SHT_CMD_PER_LUN,
.emulated = ATA_SHT_EMULATED,
.use_clustering = ATA_SHT_USE_CLUSTERING,
.proc_name = DRV_NAME,
.dma_boundary = ATA_DMA_BOUNDARY,
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
/* Use standard CHS mapping rules */
.bios_param = ata_std_bios_param,
ATA_BMDMA_SHT(DRV_NAME),
};

static const struct ata_port_operations phison_ops = {
/* Task file is PCI ATA format, use helpers */
.tf_load = ata_tf_load,
.tf_read = ata_tf_read,
.check_status = ata_check_status,
.exec_command = ata_exec_command,
.dev_select = ata_std_dev_select,

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = phison_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,

/* BMDMA handling is PCI ATA format, use helpers */
.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
.bmdma_stop = ata_bmdma_stop,
.bmdma_status = ata_bmdma_status,
.qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot,
.data_xfer = ata_data_xfer,

/* IRQ-related hooks */
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
.irq_on = ata_irq_on,

/* Generic PATA PCI ATA helpers */
.port_start = ata_port_start,
static struct ata_port_operations phison_ops = {
.inherits = &ata_bmdma_port_ops,
.prereset = phison_pre_reset,
};

static int phison_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
{
int ret;
struct ata_port_info info = {
.sht = &phison_sht,
.flags = ATA_FLAG_NO_ATAPI,
.flags = ATA_FLAG_NO_ATAPI,

.pio_mask = 0x1f,
.mwdma_mask = 0x07,
.udma_mask = ATA_UDMA5,

.port_ops = &phison_ops,
};
int ret;

const struct ata_port_info *ppi[] = { &info, NULL };

ret = ata_pci_init_one(pdev, ppi);
ret = ata_pci_sff_init_one(pdev, ppi, &phison_sht, NULL);

dev_dbg(&pdev->dev, "phison_init_one(), ret = %x\n", ret);

Expand Down

0 comments on commit 76d86df

Please sign in to comment.