Lines Matching refs:iic

87 	volatile struct iic_regs __iomem *iic = dev->vaddr;  in dump_iic_regs()  local
94 in_8(&iic->cntl), in_8(&iic->mdcntl), in_8(&iic->sts), in dump_iic_regs()
95 in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt), in dump_iic_regs()
96 in_8(&iic->xtcntlss), in_8(&iic->directcntl)); in dump_iic_regs()
139 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_init() local
144 out_8(&iic->lmadr, 0); in iic_dev_init()
145 out_8(&iic->hmadr, 0); in iic_dev_init()
148 out_8(&iic->lsadr, 0); in iic_dev_init()
149 out_8(&iic->hsadr, 0); in iic_dev_init()
152 out_8(&iic->sts, STS_SCMP | STS_IRQA); in iic_dev_init()
153 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | EXTSTS_LA in iic_dev_init()
157 out_8(&iic->clkdiv, dev->clckdiv); in iic_dev_init()
160 out_8(&iic->xfrcnt, 0); in iic_dev_init()
163 out_8(&iic->xtcntlss, XTCNTLSS_SRC | XTCNTLSS_SRS | XTCNTLSS_SWC in iic_dev_init()
167 out_8(&iic->cntl, 0); in iic_dev_init()
173 out_8(&iic->mdcntl, MDCNTL_FMDB | MDCNTL_EINT | MDCNTL_EUBS in iic_dev_init()
184 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_reset() local
192 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_dev_reset()
195 dc = in_8(&iic->directcntl); in iic_dev_reset()
200 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_dev_reset()
204 dc = in_8(&iic->directcntl); in iic_dev_reset()
210 out_8(&iic->directcntl, dc); in iic_dev_reset()
213 out_8(&iic->directcntl, dc); in iic_dev_reset()
221 out_8(&iic->xtcntlss, 0); in iic_dev_reset()
232 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask) in iic_dc_wait() argument
235 while ((in_8(&iic->directcntl) & mask) != mask){ in iic_dc_wait()
245 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_smbus_quick() local
260 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_smbus_quick()
263 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
264 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSDA | DIRCNTL_MSC))) in iic_smbus_quick()
269 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
276 out_8(&iic->directcntl, sda); in iic_smbus_quick()
279 out_8(&iic->directcntl, sda); in iic_smbus_quick()
282 out_8(&iic->directcntl, DIRCNTL_SCC | sda); in iic_smbus_quick()
283 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
289 out_8(&iic->directcntl, sda); in iic_smbus_quick()
291 out_8(&iic->directcntl, DIRCNTL_SDAC); in iic_smbus_quick()
293 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
294 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
296 res = (in_8(&iic->directcntl) & DIRCNTL_MSDA) ? -EREMOTEIO : 1; in iic_smbus_quick()
300 out_8(&iic->directcntl, 0); in iic_smbus_quick()
302 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
303 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
306 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
313 out_8(&iic->xtcntlss, 0); in iic_smbus_quick()
331 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_handler() local
334 dev->idx, in_8(&iic->sts), in_8(&iic->extsts)); in iic_handler()
337 out_8(&iic->sts, STS_IRQA | STS_SCMP); in iic_handler()
349 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_result() local
351 if (unlikely(in_8(&iic->sts) & STS_ERR)){ in iic_xfer_result()
353 in_8(&iic->extsts)); in iic_xfer_result()
356 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | in iic_xfer_result()
360 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer_result()
367 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer_result()
374 return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK; in iic_xfer_result()
382 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_abort_xfer() local
387 out_8(&iic->cntl, CNTL_HMT); in iic_abort_xfer()
394 while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_abort_xfer()
414 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_wait_for_tc() local
420 !(in_8(&iic->sts) & STS_PT), dev->adap.timeout); in iic_wait_for_tc()
424 else if (unlikely(in_8(&iic->sts) & STS_PT)){ in iic_wait_for_tc()
433 while (in_8(&iic->sts) & STS_PT){ in iic_wait_for_tc()
465 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_bytes() local
470 u8 cntl = (in_8(&iic->cntl) & CNTL_AMD) | CNTL_PT; in iic_xfer_bytes()
481 out_8((void __iomem *)&iic->mdbuf, *buf++); in iic_xfer_bytes()
491 out_8(&iic->cntl, cmd); in iic_xfer_bytes()
512 *buf++ = in_8((void __iomem *)&iic->mdbuf); in iic_xfer_bytes()
523 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_address() local
530 out_8(&iic->cntl, CNTL_AMD); in iic_address()
531 out_8(&iic->lmadr, addr); in iic_address()
532 out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06)); in iic_address()
535 out_8(&iic->cntl, 0); in iic_address()
536 out_8(&iic->lmadr, addr << 1); in iic_address()
559 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer() local
592 if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)){ in iic_xfer()
605 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer()
612 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer()