Lines Matching refs:vdi

45 static inline u32 ipu_vdi_read(struct ipu_vdi *vdi, unsigned int offset)  in ipu_vdi_read()  argument
47 return readl(vdi->base + offset); in ipu_vdi_read()
50 static inline void ipu_vdi_write(struct ipu_vdi *vdi, u32 value, in ipu_vdi_write() argument
53 writel(value, vdi->base + offset); in ipu_vdi_write()
56 void ipu_vdi_set_field_order(struct ipu_vdi *vdi, v4l2_std_id std, u32 field) in ipu_vdi_set_field_order() argument
78 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_set_field_order()
80 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_set_field_order()
85 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_set_field_order()
87 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_set_field_order()
91 void ipu_vdi_set_motion(struct ipu_vdi *vdi, enum ipu_motion_sel motion_sel) in ipu_vdi_set_motion() argument
96 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_set_motion()
98 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_set_motion()
114 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_set_motion()
116 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_set_motion()
120 void ipu_vdi_setup(struct ipu_vdi *vdi, u32 code, int xres, int yres) in ipu_vdi_setup() argument
125 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_setup()
128 ipu_vdi_write(vdi, reg, VDI_FSIZE); in ipu_vdi_setup()
142 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_setup()
147 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_setup()
149 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_setup()
153 void ipu_vdi_unsetup(struct ipu_vdi *vdi) in ipu_vdi_unsetup() argument
157 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_unsetup()
158 ipu_vdi_write(vdi, 0, VDI_FSIZE); in ipu_vdi_unsetup()
159 ipu_vdi_write(vdi, 0, VDI_C); in ipu_vdi_unsetup()
160 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_unsetup()
164 int ipu_vdi_enable(struct ipu_vdi *vdi) in ipu_vdi_enable() argument
168 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_enable()
170 if (!vdi->use_count) in ipu_vdi_enable()
171 ipu_module_enable(vdi->ipu, vdi->module); in ipu_vdi_enable()
173 vdi->use_count++; in ipu_vdi_enable()
175 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_enable()
181 int ipu_vdi_disable(struct ipu_vdi *vdi) in ipu_vdi_disable() argument
185 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_disable()
187 if (vdi->use_count) { in ipu_vdi_disable()
188 if (!--vdi->use_count) in ipu_vdi_disable()
189 ipu_module_disable(vdi->ipu, vdi->module); in ipu_vdi_disable()
192 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_disable()
204 void ipu_vdi_put(struct ipu_vdi *vdi) in ipu_vdi_put() argument
212 struct ipu_vdi *vdi; in ipu_vdi_init() local
214 vdi = devm_kzalloc(dev, sizeof(*vdi), GFP_KERNEL); in ipu_vdi_init()
215 if (!vdi) in ipu_vdi_init()
218 ipu->vdi_priv = vdi; in ipu_vdi_init()
220 spin_lock_init(&vdi->lock); in ipu_vdi_init()
221 vdi->module = module; in ipu_vdi_init()
222 vdi->base = devm_ioremap(dev, base, PAGE_SIZE); in ipu_vdi_init()
223 if (!vdi->base) in ipu_vdi_init()
226 dev_dbg(dev, "VDI base: 0x%08lx remapped to %p\n", base, vdi->base); in ipu_vdi_init()
227 vdi->ipu = ipu; in ipu_vdi_init()