Lines Matching defs:sch
54 static void chsc_subchannel_irq(struct subchannel *sch)
56 struct chsc_private *private = dev_get_drvdata(&sch->dev);
66 CHSC_MSG(0, "Interrupt on sch 0.%x.%04x with no request\n",
67 sch->schid.ssid, sch->schid.sch_no);
72 cio_update_schib(sch);
74 put_device(&sch->dev);
77 static int chsc_subchannel_probe(struct subchannel *sch)
83 sch->schid.ssid, sch->schid.sch_no);
84 sch->isc = CHSC_SCH_ISC;
88 dev_set_drvdata(&sch->dev, private);
89 ret = cio_enable_subchannel(sch, (u32)virt_to_phys(sch));
92 sch->schid.ssid, sch->schid.sch_no, ret);
93 dev_set_drvdata(&sch->dev, NULL);
99 static void chsc_subchannel_remove(struct subchannel *sch)
103 cio_disable_subchannel(sch);
104 private = dev_get_drvdata(&sch->dev);
105 dev_set_drvdata(&sch->dev, NULL);
108 put_device(&sch->dev);
113 static void chsc_subchannel_shutdown(struct subchannel *sch)
115 cio_disable_subchannel(sch);
174 struct subchannel *sch = to_subchannel(dev);
176 return sch->schib.pmcw.ena && !scsw_fctl(&sch->schib.scsw);
179 static struct subchannel *chsc_get_next_subchannel(struct subchannel *sch)
184 sch ? &sch->dev : NULL, NULL,
208 struct subchannel *sch = NULL;
213 while ((sch = chsc_get_next_subchannel(sch))) {
214 spin_lock(sch->lock);
215 private = dev_get_drvdata(&sch->dev);
217 spin_unlock(sch->lock);
221 chsc_area->header.sid = sch->schid;
223 CHSC_LOG_HEX(2, &sch->schid, sizeof(sch->schid));
232 sch->schib.scsw.cmd.fctl |= SCSW_FCTL_START_FUNC;
242 spin_unlock(sch->lock);
244 sch->schid.ssid, sch->schid.sch_no, cc);
247 put_device(&sch->dev);