Lines Matching refs:iic
70 # define DBG(f,x...) printk(KERN_DEBUG "ibm-iic" f, ##x)
82 volatile struct iic_regs __iomem *iic = dev->vaddr;
83 printk(KERN_DEBUG "ibm-iic%d: %s\n", dev->idx, header);
89 in_8(&iic->cntl), in_8(&iic->mdcntl), in_8(&iic->sts),
90 in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt),
91 in_8(&iic->xtcntlss), in_8(&iic->directcntl));
134 volatile struct iic_regs __iomem *iic = dev->vaddr;
139 out_8(&iic->lmadr, 0);
140 out_8(&iic->hmadr, 0);
143 out_8(&iic->lsadr, 0);
144 out_8(&iic->hsadr, 0);
147 out_8(&iic->sts, STS_SCMP | STS_IRQA);
148 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | EXTSTS_LA
152 out_8(&iic->clkdiv, dev->clckdiv);
155 out_8(&iic->xfrcnt, 0);
158 out_8(&iic->xtcntlss, XTCNTLSS_SRC | XTCNTLSS_SRS | XTCNTLSS_SWC
162 out_8(&iic->cntl, 0);
168 out_8(&iic->mdcntl, MDCNTL_FMDB | MDCNTL_EINT | MDCNTL_EUBS
179 volatile struct iic_regs __iomem *iic = dev->vaddr;
187 out_8(&iic->xtcntlss, XTCNTLSS_SRST);
190 dc = in_8(&iic->directcntl);
195 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
199 dc = in_8(&iic->directcntl);
205 out_8(&iic->directcntl, dc);
208 out_8(&iic->directcntl, dc);
216 out_8(&iic->xtcntlss, 0);
227 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask)
230 while ((in_8(&iic->directcntl) & mask) != mask){
240 volatile struct iic_regs __iomem *iic = dev->vaddr;
255 out_8(&iic->xtcntlss, XTCNTLSS_SRST);
258 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
259 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSDA | DIRCNTL_MSC)))
264 out_8(&iic->directcntl, DIRCNTL_SCC);
271 out_8(&iic->directcntl, sda);
274 out_8(&iic->directcntl, sda);
277 out_8(&iic->directcntl, DIRCNTL_SCC | sda);
278 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
284 out_8(&iic->directcntl, sda);
286 out_8(&iic->directcntl, DIRCNTL_SDAC);
288 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
289 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
291 res = (in_8(&iic->directcntl) & DIRCNTL_MSDA) ? -EREMOTEIO : 1;
295 out_8(&iic->directcntl, 0);
297 out_8(&iic->directcntl, DIRCNTL_SCC);
298 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
301 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
308 out_8(&iic->xtcntlss, 0);
326 volatile struct iic_regs __iomem *iic = dev->vaddr;
329 dev->idx, in_8(&iic->sts), in_8(&iic->extsts));
332 out_8(&iic->sts, STS_IRQA | STS_SCMP);
344 volatile struct iic_regs __iomem *iic = dev->vaddr;
346 if (unlikely(in_8(&iic->sts) & STS_ERR)){
348 in_8(&iic->extsts));
351 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD |
355 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB);
362 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
369 return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK;
377 volatile struct iic_regs __iomem *iic = dev->vaddr;
382 out_8(&iic->cntl, CNTL_HMT);
389 while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
409 volatile struct iic_regs __iomem *iic = dev->vaddr;
415 !(in_8(&iic->sts) & STS_PT), dev->adap.timeout);
419 else if (unlikely(in_8(&iic->sts) & STS_PT)){
428 while (in_8(&iic->sts) & STS_PT){
460 volatile struct iic_regs __iomem *iic = dev->vaddr;
465 u8 cntl = (in_8(&iic->cntl) & CNTL_AMD) | CNTL_PT;
476 out_8((void __iomem *)&iic->mdbuf, *buf++);
486 out_8(&iic->cntl, cmd);
507 *buf++ = in_8((void __iomem *)&iic->mdbuf);
518 volatile struct iic_regs __iomem *iic = dev->vaddr;
525 out_8(&iic->cntl, CNTL_AMD);
526 out_8(&iic->lmadr, addr);
527 out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06));
530 out_8(&iic->cntl, 0);
531 out_8(&iic->lmadr, addr << 1);
554 volatile struct iic_regs __iomem *iic = dev->vaddr;
587 if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)){
600 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
607 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB);
641 printk(KERN_WARNING "ibm-iic: using compatibility value for OPB freq,"
650 printk(KERN_WARNING "ibm-iic: invalid OPB clock frequency %u MHz\n",
788 { .compatible = "ibm,iic", },
795 .name = "ibm-iic",