Lines Matching defs:xc
66 xc5k_reset(struct xc5k *xc)
70 if (xc->reset)
71 error = xc->reset(xc->reset_priv);
77 xc5k_firmware_upload(struct xc5k *xc, const uint8_t *fw, size_t fwlen)
94 error = xc5k_reset(xc);
116 error = xc5k_write_buffer(xc, cmd, wrlen + 2);
129 xc5k_firmware_open(struct xc5k *xc)
139 error = xc5k_read_2(xc, XC5K_REG_PRODUCT_ID, &product_id);
159 aprint_normal_dev(xc->parent, "xc5k: loading firmware '%s/%s'\n",
162 error = xc5k_firmware_upload(xc, fw, fwlen);
166 error = xc5k_read_2(xc, XC5K_REG_VERSION, &xcversion);
172 error = xc5k_read_2(xc, XC5K_REG_BUILD, &xcbuild);
178 aprint_normal_dev(xc->parent, "xc5k: hw %d.%d, fw %d.%d.%d\n",
188 aprint_error_dev(xc->parent,
196 xc5k_read_2(struct xc5k *xc, uint16_t reg, uint16_t *val)
203 error = iic_exec(xc->i2c, I2C_OP_WRITE, xc->i2c_addr,
208 error = iic_exec(xc->i2c, I2C_OP_READ, xc->i2c_addr,
219 xc5k_write_buffer(struct xc5k *xc, const uint8_t *data, size_t datalen)
221 return iic_exec(xc->i2c, I2C_OP_WRITE, xc->i2c_addr,
226 xc5k_write_2(struct xc5k *xc, uint16_t reg, uint16_t val)
236 error = xc5k_write_buffer(xc, data, sizeof(data));
242 error = xc5k_read_2(xc, XC5K_REG_BUSY, &busy);
256 struct xc5k *xc;
259 xc = kmem_alloc(sizeof(*xc), KM_SLEEP);
260 xc->parent = parent;
261 xc->i2c = i2c;
262 xc->i2c_addr = addr;
263 xc->reset = reset;
264 xc->reset_priv = reset_priv;
265 xc->if_freq = if_freq;
266 xc->fe_type = fe_type;
268 if (xc5k_read_2(xc, XC5K_REG_PRODUCT_ID, &product_id))
276 if (xc5k_firmware_open(xc))
278 if (xc5k_write_2(xc, XC5K_REG_INIT, 0))
282 if (xc5k_read_2(xc, XC5K_REG_PRODUCT_ID, &product_id))
287 return xc;
290 kmem_free(xc, sizeof(*xc));
295 xc5k_close(struct xc5k *xc)
297 kmem_free(xc, sizeof(*xc));
301 xc5k_tune_video(struct xc5k *xc, struct xc5k_params *params)
318 if (xc5k_write_2(xc, XC5K_REG_SIGNAL_SOURCE, params->signal_source))
320 if (xc5k_write_2(xc, XC5K_REG_VIDEO_MODE, vmode))
322 if (xc5k_write_2(xc, XC5K_REG_AUDIO_MODE, amode))
324 if (xc5k_write_2(xc, XC5K_REG_OUTAMP, XC5K_OUTAMP_ANALOG))
332 if (xc5k_write_2(xc, XC5K_REG_FINER_FREQ, freq))
337 if (xc5k_read_2(xc, XC5K_REG_LOCK, &lock))
351 xc5k_tune_dtv(struct xc5k *xc, const struct dvb_frontend_parameters *params)
358 if (xc->fe_type == FE_ATSC)
360 else if (xc->fe_type == FE_QAM)
369 switch (xc->fe_type) {
385 switch (xc->fe_type) {
407 if (xc5k_write_2(xc, XC5K_REG_SIGNAL_SOURCE, signal_source))
409 if (xc5k_write_2(xc, XC5K_REG_VIDEO_MODE, vmode))
411 if (xc5k_write_2(xc, XC5K_REG_AUDIO_MODE, amode))
413 ifout = ((xc->if_freq / 1000) * 1024) / 1000;
414 if (xc5k_write_2(xc, XC5K_REG_IF_OUT, ifout))
416 if (xc5k_write_2(xc, XC5K_REG_OUTAMP, XC5K_OUTAMP_DIGITAL))
419 if (xc5k_write_2(xc, XC5K_REG_FINER_FREQ, freq))
426 xc5k_get_status(struct xc5k *xc)
431 if (xc5k_read_2(xc, XC5K_REG_LOCK, &lock_status))