Lines Matching +full:slave +full:- +full:kernel
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
31 #include <sys/kernel.h>
61 int slave; member
136 if (smbus_get_addr(dev) != -1) in smb_probe()
151 sc->sc_dev = dev; in smb_attach()
160 error = make_dev_s(&mda, &sc->sc_devnode, "smb%d", mda.mda_unit); in smb_attach()
170 destroy_dev(sc->sc_devnode); in smb_detach()
181 CP(*uaddr, *kaddr, slave); in smbcopyincmd32()
199 struct smb_softc *sc = dev->si_drv1; in smbioctl()
200 device_t smbdev = sc->sc_dev; in smbioctl()
206 * If a specific slave device is being used, override any passed-in in smbioctl()
207 * slave. in smbioctl()
211 s->slave = unit & 0x03ff; in smbioctl()
216 if (s->slave & 0x1) in smbioctl()
253 error = smbus_error(smbus_quick(parent, s->slave, SMB_QWRITE)); in smbioctl()
260 error = smbus_error(smbus_quick(parent, s->slave, SMB_QREAD)); in smbioctl()
267 error = smbus_error(smbus_sendb(parent, s->slave, s->cmd)); in smbioctl()
274 error = smbus_error(smbus_recvb(parent, s->slave, &s->cmd)); in smbioctl()
281 error = smbus_error(smbus_writeb(parent, s->slave, s->cmd, in smbioctl()
282 s->wdata.byte)); in smbioctl()
289 error = smbus_error(smbus_writew(parent, s->slave, in smbioctl()
290 s->cmd, s->wdata.word)); in smbioctl()
300 error = smbus_error(smbus_readb(parent, s->slave, s->cmd, in smbioctl()
301 &s->rdata.byte)); in smbioctl()
304 if (s->rbuf && s->rcount >= 1) { in smbioctl()
305 error = copyout(&s->rdata.byte, s->rbuf, 1); in smbioctl()
306 s->rcount = 1; in smbioctl()
317 error = smbus_error(smbus_readw(parent, s->slave, s->cmd, in smbioctl()
318 &s->rdata.word)); in smbioctl()
321 if (s->rbuf && s->rcount >= 2) { in smbioctl()
322 buf[0] = (u_char)s->rdata.word; in smbioctl()
323 buf[1] = (u_char)(s->rdata.word >> 8); in smbioctl()
324 error = copyout(buf, s->rbuf, 2); in smbioctl()
325 s->rcount = 2; in smbioctl()
336 error = smbus_error(smbus_pcall(parent, s->slave, s->cmd, in smbioctl()
337 s->wdata.word, &s->rdata.word)); in smbioctl()
340 if (s->rbuf && s->rcount >= 2) { in smbioctl()
341 buf[0] = (u_char)s->rdata.word; in smbioctl()
342 buf[1] = (u_char)(s->rdata.word >> 8); in smbioctl()
343 error = copyout(buf, s->rbuf, 2); in smbioctl()
344 s->rcount = 2; in smbioctl()
353 if (s->wcount < 0) { in smbioctl()
357 if (s->wcount > SMB_MAXBLOCKSIZE) in smbioctl()
358 s->wcount = SMB_MAXBLOCKSIZE; in smbioctl()
359 if (s->wcount) in smbioctl()
360 error = copyin(s->wbuf, buf, s->wcount); in smbioctl()
363 error = smbus_error(smbus_bwrite(parent, s->slave, s->cmd, in smbioctl()
364 s->wcount, buf)); in smbioctl()
371 if (s->rcount < 0) { in smbioctl()
375 if (s->rcount > SMB_MAXBLOCKSIZE) in smbioctl()
376 s->rcount = SMB_MAXBLOCKSIZE; in smbioctl()
377 error = smbus_error(smbus_bread(parent, s->slave, s->cmd, in smbioctl()
381 if (s->rcount > bcount) in smbioctl()
382 s->rcount = bcount; in smbioctl()
383 error = copyout(buf, s->rbuf, s->rcount); in smbioctl()
404 if (s->rbuf == NULL) in smbioctl()