mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
s390/scm_drv: extend notify callback
Extend the notify callback of scm_driver by an event parameter to allow to distinguish between different notifications. Reviewed-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
8360cb5f38
commit
93481c9020
@ -96,11 +96,13 @@ struct scm_device {
|
||||
#define OP_STATE_TEMP_ERR 2
|
||||
#define OP_STATE_PERM_ERR 3
|
||||
|
||||
enum scm_event {SCM_CHANGE};
|
||||
|
||||
struct scm_driver {
|
||||
struct device_driver drv;
|
||||
int (*probe) (struct scm_device *scmdev);
|
||||
int (*remove) (struct scm_device *scmdev);
|
||||
void (*notify) (struct scm_device *scmdev);
|
||||
void (*notify) (struct scm_device *scmdev, enum scm_event event);
|
||||
void (*handler) (struct scm_device *scmdev, void *data, int error);
|
||||
};
|
||||
|
||||
|
@ -13,12 +13,16 @@
|
||||
#include <asm/eadm.h>
|
||||
#include "scm_blk.h"
|
||||
|
||||
static void notify(struct scm_device *scmdev)
|
||||
static void scm_notify(struct scm_device *scmdev, enum scm_event event)
|
||||
{
|
||||
pr_info("%lu: The capabilities of the SCM increment changed\n",
|
||||
(unsigned long) scmdev->address);
|
||||
SCM_LOG(2, "State changed");
|
||||
SCM_LOG_STATE(2, scmdev);
|
||||
switch (event) {
|
||||
case SCM_CHANGE:
|
||||
pr_info("%lu: The capabilities of the SCM increment changed\n",
|
||||
(unsigned long) scmdev->address);
|
||||
SCM_LOG(2, "State changed");
|
||||
SCM_LOG_STATE(2, scmdev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int scm_probe(struct scm_device *scmdev)
|
||||
@ -64,7 +68,7 @@ static struct scm_driver scm_drv = {
|
||||
.name = "scm_block",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.notify = notify,
|
||||
.notify = scm_notify,
|
||||
.probe = scm_probe,
|
||||
.remove = scm_remove,
|
||||
.handler = scm_blk_irq,
|
||||
|
@ -211,7 +211,7 @@ static void scmdev_update(struct scm_device *scmdev, struct sale *sale)
|
||||
goto out;
|
||||
scmdrv = to_scm_drv(scmdev->dev.driver);
|
||||
if (changed && scmdrv->notify)
|
||||
scmdrv->notify(scmdev);
|
||||
scmdrv->notify(scmdev, SCM_CHANGE);
|
||||
out:
|
||||
device_unlock(&scmdev->dev);
|
||||
if (changed)
|
||||
|
Loading…
Reference in New Issue
Block a user