Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 602b20f2 authored by Cornelia Huck's avatar Cornelia Huck Committed by Martin Schwidefsky
Browse files

[S390] cio: css_driver: Use consistent parameters.



Make all callbacks in css_driver take a struct subchannel (and not
a struct device).

Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 084325d8
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ static void terminate_internal_io(struct subchannel *sch)
	device_set_intretry(sch);
	/* Call handler. */
	if (sch->driver && sch->driver->termination)
		sch->driver->termination(&sch->dev);
		sch->driver->termination(sch);
}

static int
@@ -172,12 +172,12 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
			terminate_internal_io(sch);
			/* Re-start path verification. */
			if (sch->driver && sch->driver->verify)
				sch->driver->verify(&sch->dev);
				sch->driver->verify(sch);
		}
	} else {
		/* trigger path verification. */
		if (sch->driver && sch->driver->verify)
			sch->driver->verify(&sch->dev);
			sch->driver->verify(sch);
		else if (sch->lpm == mask)
			goto out_unreg;
	}
@@ -279,7 +279,7 @@ __s390_process_res_acc(struct subchannel_id schid, void *data)
	if (!old_lpm && sch->lpm)
		device_trigger_reprobe(sch);
	else if (sch->driver && sch->driver->verify)
		sch->driver->verify(&sch->dev);
		sch->driver->verify(sch);
out:
	spin_unlock_irq(sch->lock);
	put_device(&sch->dev);
@@ -549,7 +549,7 @@ __chp_add(struct subchannel_id schid, void *data)
		    | mask) & sch->opm;

	if (sch->driver && sch->driver->verify)
		sch->driver->verify(&sch->dev);
		sch->driver->verify(sch);

	spin_unlock_irq(sch->lock);
	put_device(&sch->dev);
@@ -589,7 +589,7 @@ static void __s390_subchannel_vary_chpid(struct subchannel *sch,
			if (!old_lpm)
				device_trigger_reprobe(sch);
			else if (sch->driver && sch->driver->verify)
				sch->driver->verify(&sch->dev);
				sch->driver->verify(sch);
			break;
		}
		sch->opm &= ~mask;
@@ -603,13 +603,13 @@ static void __s390_subchannel_vary_chpid(struct subchannel *sch,
				terminate_internal_io(sch);
				/* Re-start path verification. */
				if (sch->driver && sch->driver->verify)
					sch->driver->verify(&sch->dev);
					sch->driver->verify(sch);
			}
		} else if (!sch->lpm) {
			if (device_trigger_verify(sch) != 0)
				css_schedule_eval(sch->schid);
		} else if (sch->driver && sch->driver->verify)
			sch->driver->verify(&sch->dev);
			sch->driver->verify(sch);
		break;
	}
	spin_unlock_irqrestore(sch->lock, flags);
+2 −2
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ cio_tpi(void)
	spin_lock(sch->lock);
	memcpy (&sch->schib.scsw, &irb->scsw, sizeof (struct scsw));
	if (sch->driver && sch->driver->irq)
		sch->driver->irq(&sch->dev);
		sch->driver->irq(sch);
	spin_unlock(sch->lock);
	irq_exit ();
	_local_bh_enable();
@@ -680,7 +680,7 @@ do_IRQ (struct pt_regs *regs)
				sizeof (irb->scsw));
			/* Call interrupt handler if there is one. */
			if (sch->driver && sch->driver->irq)
				sch->driver->irq(&sch->dev);
				sch->driver->irq(sch);
		}
		if (sch)
			spin_unlock(sch->lock);
+1 −1
Original line number Diff line number Diff line
@@ -293,7 +293,7 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow)
		action = UNREGISTER;
		if (sch->driver && sch->driver->notify) {
			spin_unlock_irqrestore(sch->lock, flags);
			ret = sch->driver->notify(&sch->dev, event);
			ret = sch->driver->notify(sch, event);
			spin_lock_irqsave(sch->lock, flags);
			if (ret)
				action = NONE;
+4 −4
Original line number Diff line number Diff line
@@ -125,10 +125,10 @@ struct subchannel;
struct css_driver {
	unsigned int subchannel_type;
	struct device_driver drv;
	void (*irq)(struct device *);
	int (*notify)(struct device *, int);
	void (*verify)(struct device *);
	void (*termination)(struct device *);
	void (*irq)(struct subchannel *);
	int (*notify)(struct subchannel *, int);
	void (*verify)(struct subchannel *);
	void (*termination)(struct subchannel *);
	int (*probe)(struct subchannel *);
	int (*remove)(struct subchannel *);
	void (*shutdown)(struct subchannel *);
+24 −14
Original line number Diff line number Diff line
@@ -115,11 +115,12 @@ static int ccw_uevent(struct device *dev, struct kobj_uevent_env *env)

struct bus_type ccw_bus_type;

static void io_subchannel_irq(struct subchannel *);
static int io_subchannel_probe(struct subchannel *);
static int io_subchannel_remove(struct subchannel *);
static int io_subchannel_notify(struct device *, int);
static void io_subchannel_verify(struct device *);
static void io_subchannel_ioterm(struct device *);
static int io_subchannel_notify(struct subchannel *, int);
static void io_subchannel_verify(struct subchannel *);
static void io_subchannel_ioterm(struct subchannel *);
static void io_subchannel_shutdown(struct subchannel *);

static struct css_driver io_subchannel_driver = {
@@ -1096,6 +1097,18 @@ static void ccw_device_move_to_sch(struct work_struct *work)
	put_device(&cdev->dev);
}

static void io_subchannel_irq(struct subchannel *sch)
{
	struct ccw_device *cdev;

	cdev = sch->dev.driver_data;

	CIO_TRACE_EVENT(3, "IRQ");
	CIO_TRACE_EVENT(3, sch->dev.bus_id);
	if (cdev)
		dev_fsm_event(cdev, DEV_EVENT_INTERRUPT);
}

static int
io_subchannel_probe (struct subchannel *sch)
{
@@ -1183,12 +1196,11 @@ io_subchannel_remove (struct subchannel *sch)
	return 0;
}

static int
io_subchannel_notify(struct device *dev, int event)
static int io_subchannel_notify(struct subchannel *sch, int event)
{
	struct ccw_device *cdev;

	cdev = dev->driver_data;
	cdev = sch->dev.driver_data;
	if (!cdev)
		return 0;
	if (!cdev->drv)
@@ -1198,22 +1210,20 @@ io_subchannel_notify(struct device *dev, int event)
	return cdev->drv->notify ? cdev->drv->notify(cdev, event) : 0;
}

static void
io_subchannel_verify(struct device *dev)
static void io_subchannel_verify(struct subchannel *sch)
{
	struct ccw_device *cdev;

	cdev = dev->driver_data;
	cdev = sch->dev.driver_data;
	if (cdev)
		dev_fsm_event(cdev, DEV_EVENT_VERIFY);
}

static void
io_subchannel_ioterm(struct device *dev)
static void io_subchannel_ioterm(struct subchannel *sch)
{
	struct ccw_device *cdev;

	cdev = dev->driver_data;
	cdev = sch->dev.driver_data;
	if (!cdev)
		return;
	/* Internal I/O will be retried by the interrupt handler. */
Loading