Lines Matching refs:iic

85 	volatile struct iic_regs __iomem *iic = dev->vaddr;  in dump_iic_regs()  local
92 in_8(&iic->cntl), in_8(&iic->mdcntl), in_8(&iic->sts), in dump_iic_regs()
93 in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt), in dump_iic_regs()
94 in_8(&iic->xtcntlss), in_8(&iic->directcntl)); in dump_iic_regs()
137 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_init() local
142 out_8(&iic->lmadr, 0); in iic_dev_init()
143 out_8(&iic->hmadr, 0); in iic_dev_init()
146 out_8(&iic->lsadr, 0); in iic_dev_init()
147 out_8(&iic->hsadr, 0); in iic_dev_init()
150 out_8(&iic->sts, STS_SCMP | STS_IRQA); in iic_dev_init()
151 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | EXTSTS_LA in iic_dev_init()
155 out_8(&iic->clkdiv, dev->clckdiv); in iic_dev_init()
158 out_8(&iic->xfrcnt, 0); in iic_dev_init()
161 out_8(&iic->xtcntlss, XTCNTLSS_SRC | XTCNTLSS_SRS | XTCNTLSS_SWC in iic_dev_init()
165 out_8(&iic->cntl, 0); in iic_dev_init()
171 out_8(&iic->mdcntl, MDCNTL_FMDB | MDCNTL_EINT | MDCNTL_EUBS in iic_dev_init()
182 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_dev_reset() local
190 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_dev_reset()
193 dc = in_8(&iic->directcntl); in iic_dev_reset()
198 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_dev_reset()
202 dc = in_8(&iic->directcntl); in iic_dev_reset()
208 out_8(&iic->directcntl, dc); in iic_dev_reset()
211 out_8(&iic->directcntl, dc); in iic_dev_reset()
219 out_8(&iic->xtcntlss, 0); in iic_dev_reset()
230 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask) in iic_dc_wait() argument
233 while ((in_8(&iic->directcntl) & mask) != mask){ in iic_dc_wait()
243 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_smbus_quick() local
258 out_8(&iic->xtcntlss, XTCNTLSS_SRST); in iic_smbus_quick()
261 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
262 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSDA | DIRCNTL_MSC))) in iic_smbus_quick()
267 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
274 out_8(&iic->directcntl, sda); in iic_smbus_quick()
277 out_8(&iic->directcntl, sda); in iic_smbus_quick()
280 out_8(&iic->directcntl, DIRCNTL_SCC | sda); in iic_smbus_quick()
281 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
287 out_8(&iic->directcntl, sda); in iic_smbus_quick()
289 out_8(&iic->directcntl, DIRCNTL_SDAC); in iic_smbus_quick()
291 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
292 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
294 res = (in_8(&iic->directcntl) & DIRCNTL_MSDA) ? -EREMOTEIO : 1; in iic_smbus_quick()
298 out_8(&iic->directcntl, 0); in iic_smbus_quick()
300 out_8(&iic->directcntl, DIRCNTL_SCC); in iic_smbus_quick()
301 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC))) in iic_smbus_quick()
304 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC); in iic_smbus_quick()
311 out_8(&iic->xtcntlss, 0); in iic_smbus_quick()
329 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_handler() local
332 dev->idx, in_8(&iic->sts), in_8(&iic->extsts)); in iic_handler()
335 out_8(&iic->sts, STS_IRQA | STS_SCMP); in iic_handler()
347 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_result() local
349 if (unlikely(in_8(&iic->sts) & STS_ERR)){ in iic_xfer_result()
351 in_8(&iic->extsts)); in iic_xfer_result()
354 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | in iic_xfer_result()
358 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer_result()
365 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer_result()
372 return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK; in iic_xfer_result()
380 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_abort_xfer() local
385 out_8(&iic->cntl, CNTL_HMT); in iic_abort_xfer()
392 while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_abort_xfer()
412 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_wait_for_tc() local
418 !(in_8(&iic->sts) & STS_PT), dev->adap.timeout); in iic_wait_for_tc()
422 else if (unlikely(in_8(&iic->sts) & STS_PT)){ in iic_wait_for_tc()
431 while (in_8(&iic->sts) & STS_PT){ in iic_wait_for_tc()
463 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer_bytes() local
468 u8 cntl = (in_8(&iic->cntl) & CNTL_AMD) | CNTL_PT; in iic_xfer_bytes()
479 out_8((void __iomem *)&iic->mdbuf, *buf++); in iic_xfer_bytes()
489 out_8(&iic->cntl, cmd); in iic_xfer_bytes()
510 *buf++ = in_8((void __iomem *)&iic->mdbuf); in iic_xfer_bytes()
521 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_address() local
528 out_8(&iic->cntl, CNTL_AMD); in iic_address()
529 out_8(&iic->lmadr, addr); in iic_address()
530 out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06)); in iic_address()
533 out_8(&iic->cntl, 0); in iic_address()
534 out_8(&iic->lmadr, addr << 1); in iic_address()
557 volatile struct iic_regs __iomem *iic = dev->vaddr; in iic_xfer() local
593 if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)){ in iic_xfer()
606 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){ in iic_xfer()
613 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB); in iic_xfer()