GNU Linux-libre 4.9.317-gnu1
[releases.git] / drivers / media / pci / tw5864 / tw5864-util.c
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 }