Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 188299
b: refs/heads/master
c: 64355b9
h: refs/heads/master
i:
  188297: 871ab7b
  188295: 8944139
v: v3
  • Loading branch information
Brian King authored and James Bottomley committed Mar 3, 2010
1 parent 35327cd commit 9afca8a
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c03af1ae1cce97a5530b907ea03625ce6e00214e
refs/heads/master: 64355b929dec0cb6271e4ac7834c9cf262961e40
19 changes: 19 additions & 0 deletions trunk/drivers/scsi/ibmvscsi/ibmvscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
#include <linux/dma-mapping.h>
#include <linux/delay.h>
#include <linux/of.h>
#include <linux/pm.h>
#include <asm/firmware.h>
#include <asm/vio.h>
#include <scsi/scsi.h>
Expand Down Expand Up @@ -1990,6 +1991,19 @@ static int ibmvscsi_remove(struct vio_dev *vdev)
return 0;
}

/**
* ibmvscsi_resume: Resume from suspend
* @dev: device struct
*
* We may have lost an interrupt across suspend/resume, so kick the
* interrupt handler
*/
static int ibmvscsi_resume(struct device *dev)
{
struct ibmvscsi_host_data *hostdata = dev_get_drvdata(dev);
return ibmvscsi_ops->resume(hostdata);
}

/**
* ibmvscsi_device_table: Used by vio.c to match devices in the device tree we
* support.
Expand All @@ -2000,6 +2014,10 @@ static struct vio_device_id ibmvscsi_device_table[] __devinitdata = {
};
MODULE_DEVICE_TABLE(vio, ibmvscsi_device_table);

static struct dev_pm_ops ibmvscsi_pm_ops = {
.resume = ibmvscsi_resume
};

static struct vio_driver ibmvscsi_driver = {
.id_table = ibmvscsi_device_table,
.probe = ibmvscsi_probe,
Expand All @@ -2008,6 +2026,7 @@ static struct vio_driver ibmvscsi_driver = {
.driver = {
.name = "ibmvscsi",
.owner = THIS_MODULE,
.pm = &ibmvscsi_pm_ops,
}
};

Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/scsi/ibmvscsi/ibmvscsi.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ struct ibmvscsi_ops {
struct ibmvscsi_host_data *hostdata);
int (*send_crq)(struct ibmvscsi_host_data *hostdata,
u64 word1, u64 word2);
int (*resume) (struct ibmvscsi_host_data *hostdata);
};

extern struct ibmvscsi_ops iseriesvscsi_ops;
Expand Down
6 changes: 6 additions & 0 deletions trunk/drivers/scsi/ibmvscsi/iseries_vscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,16 @@ static int iseriesvscsi_send_crq(struct ibmvscsi_host_data *hostdata,
0);
}

static int iseriesvscsi_resume(struct ibmvscsi_host_data *hostdata)
{
return 0;
}

struct ibmvscsi_ops iseriesvscsi_ops = {
.init_crq_queue = iseriesvscsi_init_crq_queue,
.release_crq_queue = iseriesvscsi_release_crq_queue,
.reset_crq_queue = iseriesvscsi_reset_crq_queue,
.reenable_crq_queue = iseriesvscsi_reenable_crq_queue,
.send_crq = iseriesvscsi_send_crq,
.resume = iseriesvscsi_resume,
};
13 changes: 13 additions & 0 deletions trunk/drivers/scsi/ibmvscsi/rpa_vscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,10 +334,23 @@ static int rpavscsi_reenable_crq_queue(struct crq_queue *queue,
return rc;
}

/**
* rpavscsi_resume: - resume after suspend
* @hostdata: ibmvscsi_host_data of host
*
*/
static int rpavscsi_resume(struct ibmvscsi_host_data *hostdata)
{
vio_disable_interrupts(to_vio_dev(hostdata->dev));
tasklet_schedule(&hostdata->srp_task);
return 0;
}

struct ibmvscsi_ops rpavscsi_ops = {
.init_crq_queue = rpavscsi_init_crq_queue,
.release_crq_queue = rpavscsi_release_crq_queue,
.reset_crq_queue = rpavscsi_reset_crq_queue,
.reenable_crq_queue = rpavscsi_reenable_crq_queue,
.send_crq = rpavscsi_send_crq,
.resume = rpavscsi_resume,
};

0 comments on commit 9afca8a

Please sign in to comment.