Lines Matching refs:iic
71 # define DBG(f,x...) printk(KERN_DEBUG "ibm-iic" f, ##x)
83 volatile struct iic_regs __iomem *iic = dev->vaddr;
84 printk(KERN_DEBUG "ibm-iic%d: %s\n", dev->idx, header);
90 in_8(&iic->cntl), in_8(&iic->mdcntl), in_8(&iic->sts),
91 in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt),
92 in_8(&iic->xtcntlss), in_8(&iic->directcntl));
135 volatile struct iic_regs __iomem *iic = dev->vaddr;
140 out_8(&iic->lmadr, 0);
141 out_8(&iic->hmadr, 0);
144 out_8(&iic->lsadr, 0);
145 out_8(&iic->hsadr, 0);
148 out_8(&iic->sts, STS_SCMP | STS_IRQA);
149 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD | EXTSTS_LA
153 out_8(&iic->clkdiv, dev->clckdiv);
156 out_8(&iic->xfrcnt, 0);
159 out_8(&iic->xtcntlss, XTCNTLSS_SRC | XTCNTLSS_SRS | XTCNTLSS_SWC
163 out_8(&iic->cntl, 0);
169 out_8(&iic->mdcntl, MDCNTL_FMDB | MDCNTL_EINT | MDCNTL_EUBS
180 volatile struct iic_regs __iomem *iic = dev->vaddr;
188 out_8(&iic->xtcntlss, XTCNTLSS_SRST);
191 dc = in_8(&iic->directcntl);
196 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
200 dc = in_8(&iic->directcntl);
206 out_8(&iic->directcntl, dc);
209 out_8(&iic->directcntl, dc);
217 out_8(&iic->xtcntlss, 0);
228 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask)
231 while ((in_8(&iic->directcntl) & mask) != mask){
241 volatile struct iic_regs __iomem *iic = dev->vaddr;
256 out_8(&iic->xtcntlss, XTCNTLSS_SRST);
259 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
260 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSDA | DIRCNTL_MSC)))
265 out_8(&iic->directcntl, DIRCNTL_SCC);
272 out_8(&iic->directcntl, sda);
275 out_8(&iic->directcntl, sda);
278 out_8(&iic->directcntl, DIRCNTL_SCC | sda);
279 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
285 out_8(&iic->directcntl, sda);
287 out_8(&iic->directcntl, DIRCNTL_SDAC);
289 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
290 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
292 res = (in_8(&iic->directcntl) & DIRCNTL_MSDA) ? -EREMOTEIO : 1;
296 out_8(&iic->directcntl, 0);
298 out_8(&iic->directcntl, DIRCNTL_SCC);
299 if (unlikely(iic_dc_wait(iic, DIRCNTL_MSC)))
302 out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
309 out_8(&iic->xtcntlss, 0);
327 volatile struct iic_regs __iomem *iic = dev->vaddr;
330 dev->idx, in_8(&iic->sts), in_8(&iic->extsts));
333 out_8(&iic->sts, STS_IRQA | STS_SCMP);
345 volatile struct iic_regs __iomem *iic = dev->vaddr;
347 if (unlikely(in_8(&iic->sts) & STS_ERR)){
349 in_8(&iic->extsts));
352 out_8(&iic->extsts, EXTSTS_IRQP | EXTSTS_IRQD |
356 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB);
363 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
370 return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK;
378 volatile struct iic_regs __iomem *iic = dev->vaddr;
383 out_8(&iic->cntl, CNTL_HMT);
390 while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
410 volatile struct iic_regs __iomem *iic = dev->vaddr;
416 !(in_8(&iic->sts) & STS_PT), dev->adap.timeout);
420 else if (unlikely(in_8(&iic->sts) & STS_PT)){
429 while (in_8(&iic->sts) & STS_PT){
461 volatile struct iic_regs __iomem *iic = dev->vaddr;
466 u8 cntl = (in_8(&iic->cntl) & CNTL_AMD) | CNTL_PT;
477 out_8((void __iomem *)&iic->mdbuf, *buf++);
487 out_8(&iic->cntl, cmd);
508 *buf++ = in_8((void __iomem *)&iic->mdbuf);
519 volatile struct iic_regs __iomem *iic = dev->vaddr;
526 out_8(&iic->cntl, CNTL_AMD);
527 out_8(&iic->lmadr, addr);
528 out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06));
531 out_8(&iic->cntl, 0);
532 out_8(&iic->lmadr, addr << 1);
555 volatile struct iic_regs __iomem *iic = dev->vaddr;
588 if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)){
601 if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
608 out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB);
642 printk(KERN_WARNING "ibm-iic: using compatibility value for OPB freq,"
651 printk(KERN_WARNING "ibm-iic: invalid OPB clock frequency %u MHz\n",
787 { .compatible = "ibm,iic", },
794 .name = "ibm-iic",