1 #include "tw5864.h" 2 3 void tw5864_indir_writeb(struct tw5864_dev *dev, u16 addr, u8 data) 4 { 5 int retries = 30000; 6 7 while (tw_readl(TW5864_IND_CTL) & BIT(31) && --retries) 8 ; 9 if (!retries) 10 dev_err(&dev->pci->dev, 11 "tw_indir_writel() retries exhausted before writing\n"); 12 13 tw_writel(TW5864_IND_DATA, data); 14 tw_writel(TW5864_IND_CTL, addr << 2 | TW5864_RW | TW5864_ENABLE); 15 } 16 17 u8 tw5864_indir_readb(struct tw5864_dev *dev, u16 addr) 18 { 19 int retries = 30000; 20 21 while (tw_readl(TW5864_IND_CTL) & BIT(31) && --retries) 22 ; 23 if (!retries) 24 dev_err(&dev->pci->dev, 25 "tw_indir_readl() retries exhausted before reading\n"); 26 27 tw_writel(TW5864_IND_CTL, addr << 2 | TW5864_ENABLE); 28 29 retries = 30000; 30 while (tw_readl(TW5864_IND_CTL) & BIT(31) && --retries) 31 ; 32 if (!retries) 33 dev_err(&dev->pci->dev, 34 "tw_indir_readl() retries exhausted at reading\n"); 35 36 return tw_readl(TW5864_IND_DATA); 37 } 38