Lines Matching refs:iic

82 	volatile struct iic_regs __iomem *iic = dev->vaddr;  in dump_iic_regs()  local
89 in_8(&iic->cntl), in_8(&iic->mdcntl), in_8(&iic->sts), in dump_iic_regs()
90 in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt), in dump_iic_regs()
91 in_8(&iic->xtcntlss), in_8(&iic->directcntl)); in dump_iic_regs()
134 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_init() local
139 out_8(&iic->lmadr, 0); in iic_dev_init()
140 out_8(&iic->hmadr, 0); in iic_dev_init()
143 out_8(&iic->lsadr, 0); in iic_dev_init()
144 out_8(&iic->hsadr, 0); in iic_dev_init()
147 out_8(&iic->sts, STS_SCMP | STS_IRQA); in iic_dev_init()
148 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | EXTSTS_LA in iic_dev_init()
152 out_8(&iic->clkdiv, dev->clckdiv); in iic_dev_init()
155 out_8(&iic->xfrcnt, 0); in iic_dev_init()
158 out_8(&iic->xtcntlss, XTCNTLSS_SRC | XTCNTLSS_SRS | XTCNTLSS_SWC in iic_dev_init()
162 out_8(&iic->cntl, 0); in iic_dev_init()
168 out_8(&iic->mdcntl, MDCNTL_FMDB | MDCNTL_EINT | MDCNTL_EUBS in iic_dev_init()
179 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_reset() local
187 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_dev_reset()
190 dc = in_8(&iic->directcntl); in iic_dev_reset()
195 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_dev_reset()
199 dc = in_8(&iic->directcntl); in iic_dev_reset()
205 out_8(&iic->directcntl, dc); in iic_dev_reset()
208 out_8(&iic->directcntl, dc); in iic_dev_reset()
216 out_8(&iic->xtcntlss, 0); in iic_dev_reset()
227 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask) in iic_dc_wait() argument
230 while ((in_8(&iic->directcntl) & mask) != mask){ in iic_dc_wait()
240 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_smbus_quick() local
255 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_smbus_quick()
258 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
259 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSDA | DIRCNTL_MSC))) in iic_smbus_quick()
264 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
271 out_8(&iic->directcntl, sda); in iic_smbus_quick()
274 out_8(&iic->directcntl, sda); in iic_smbus_quick()
277 out_8(&iic->directcntl, DIRCNTL_SCC | sda); in iic_smbus_quick()
278 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
284 out_8(&iic->directcntl, sda); in iic_smbus_quick()
286 out_8(&iic->directcntl, DIRCNTL_SDAC); in iic_smbus_quick()
288 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
289 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
291 res = (in_8(&iic->directcntl) & DIRCNTL_MSDA) ? -EREMOTEIO : 1; in iic_smbus_quick()
295 out_8(&iic->directcntl, 0); in iic_smbus_quick()
297 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
298 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
301 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
308 out_8(&iic->xtcntlss, 0); in iic_smbus_quick()
326 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_handler() local
329 dev->idx, in_8(&iic->sts), in_8(&iic->extsts)); in iic_handler()
332 out_8(&iic->sts, STS_IRQA | STS_SCMP); in iic_handler()
344 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_result() local
346 if (unlikely(in_8(&iic->sts) & STS_ERR)){ in iic_xfer_result()
348 in_8(&iic->extsts)); in iic_xfer_result()
351 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | in iic_xfer_result()
355 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer_result()
362 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer_result()
369 return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK; in iic_xfer_result()
377 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_abort_xfer() local
382 out_8(&iic->cntl, CNTL_HMT); in iic_abort_xfer()
389 while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_abort_xfer()
409 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_wait_for_tc() local
415 !(in_8(&iic->sts) & STS_PT), dev->adap.timeout); in iic_wait_for_tc()
419 else if (unlikely(in_8(&iic->sts) & STS_PT)){ in iic_wait_for_tc()
428 while (in_8(&iic->sts) & STS_PT){ in iic_wait_for_tc()
460 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_bytes() local
465 u8 cntl = (in_8(&iic->cntl) & CNTL_AMD) | CNTL_PT; in iic_xfer_bytes()
476 out_8((void __iomem *)&iic->mdbuf, *buf++); in iic_xfer_bytes()
486 out_8(&iic->cntl, cmd); in iic_xfer_bytes()
507 *buf++ = in_8((void __iomem *)&iic->mdbuf); in iic_xfer_bytes()
518 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_address() local
525 out_8(&iic->cntl, CNTL_AMD); in iic_address()
526 out_8(&iic->lmadr, addr); in iic_address()
527 out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06)); in iic_address()
530 out_8(&iic->cntl, 0); in iic_address()
531 out_8(&iic->lmadr, addr << 1); in iic_address()
554 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer() local
587 if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)){ in iic_xfer()
600 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer()
607 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer()