• Home
  • Raw
  • Download

Lines Matching refs:sdev

186 	struct si4713_device *sdev = dev;  in si4713_handler()  local
188 v4l2_dbg(2, debug, &sdev->sd, in si4713_handler()
190 complete(&sdev->work); in si4713_handler()
205 static int si4713_send_command(struct si4713_device *sdev, const u8 command, in si4713_send_command() argument
209 struct i2c_client *client = v4l2_get_subdevdata(&sdev->sd); in si4713_send_command()
220 DBG_BUFFER(&sdev->sd, "Parameters", data1, argn + 1); in si4713_send_command()
224 v4l2_err(&sdev->sd, "Error while sending command 0x%02x\n", in si4713_send_command()
233 if (!wait_for_completion_timeout(&sdev->work, in si4713_send_command()
235 v4l2_warn(&sdev->sd, in si4713_send_command()
243 v4l2_err(&sdev->sd, in si4713_send_command()
249 DBG_BUFFER(&sdev->sd, "Response", response, respn); in si4713_send_command()
270 static int si4713_read_property(struct si4713_device *sdev, u16 prop, u32 *pv) in si4713_read_property() argument
285 err = si4713_send_command(sdev, SI4713_CMD_GET_PROPERTY, in si4713_read_property()
294 v4l2_dbg(1, debug, &sdev->sd, in si4713_read_property()
307 static int si4713_write_property(struct si4713_device *sdev, u16 prop, u16 val) in si4713_write_property() argument
326 rval = si4713_send_command(sdev, SI4713_CMD_SET_PROPERTY, in si4713_write_property()
334 v4l2_dbg(1, debug, &sdev->sd, in si4713_write_property()
352 static int si4713_powerup(struct si4713_device *sdev) in si4713_powerup() argument
354 struct i2c_client *client = v4l2_get_subdevdata(&sdev->sd); in si4713_powerup()
366 if (sdev->power_state) in si4713_powerup()
369 if (sdev->supplies) { in si4713_powerup()
370 err = regulator_bulk_enable(sdev->supplies, sdev->supply_data); in si4713_powerup()
372 v4l2_err(&sdev->sd, "Failed to enable supplies: %d\n", err); in si4713_powerup()
376 if (gpio_is_valid(sdev->gpio_reset)) { in si4713_powerup()
378 gpio_set_value(sdev->gpio_reset, 1); in si4713_powerup()
384 err = si4713_send_command(sdev, SI4713_CMD_POWER_UP, in si4713_powerup()
390 v4l2_dbg(1, debug, &sdev->sd, "Powerup response: 0x%02x\n", in si4713_powerup()
392 v4l2_dbg(1, debug, &sdev->sd, "Device in power up mode\n"); in si4713_powerup()
393 sdev->power_state = POWER_ON; in si4713_powerup()
396 err = si4713_write_property(sdev, SI4713_GPO_IEN, in si4713_powerup()
400 if (gpio_is_valid(sdev->gpio_reset)) in si4713_powerup()
401 gpio_set_value(sdev->gpio_reset, 0); in si4713_powerup()
402 if (sdev->supplies) { in si4713_powerup()
403 err = regulator_bulk_disable(sdev->supplies, sdev->supply_data); in si4713_powerup()
405 v4l2_err(&sdev->sd, in si4713_powerup()
416 static int si4713_powerdown(struct si4713_device *sdev) in si4713_powerdown() argument
421 if (!sdev->power_state) in si4713_powerdown()
424 err = si4713_send_command(sdev, SI4713_CMD_POWER_DOWN, in si4713_powerdown()
430 v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n", in si4713_powerdown()
432 v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n"); in si4713_powerdown()
433 if (gpio_is_valid(sdev->gpio_reset)) in si4713_powerdown()
434 gpio_set_value(sdev->gpio_reset, 0); in si4713_powerdown()
435 if (sdev->supplies) { in si4713_powerdown()
436 err = regulator_bulk_disable(sdev->supplies, in si4713_powerdown()
437 sdev->supply_data); in si4713_powerdown()
439 v4l2_err(&sdev->sd, in si4713_powerdown()
442 sdev->power_state = POWER_OFF; in si4713_powerdown()
452 static int si4713_checkrev(struct si4713_device *sdev) in si4713_checkrev() argument
454 struct i2c_client *client = v4l2_get_subdevdata(&sdev->sd); in si4713_checkrev()
458 rval = si4713_send_command(sdev, SI4713_CMD_GET_REV, in si4713_checkrev()
467 v4l2_info(&sdev->sd, "chip found @ 0x%02x (%s)\n", in si4713_checkrev()
470 v4l2_err(&sdev->sd, "Invalid product number 0x%X\n", resp[1]); in si4713_checkrev()
482 static int si4713_wait_stc(struct si4713_device *sdev, const int usecs) in si4713_wait_stc() argument
484 struct i2c_client *client = v4l2_get_subdevdata(&sdev->sd); in si4713_wait_stc()
490 !wait_for_completion_timeout(&sdev->work, usecs_to_jiffies(usecs) + 1)) in si4713_wait_stc()
491 v4l2_warn(&sdev->sd, in si4713_wait_stc()
496 err = si4713_send_command(sdev, SI4713_CMD_GET_INT_STATUS, in si4713_wait_stc()
503 v4l2_dbg(1, debug, &sdev->sd, in si4713_wait_stc()
526 static int si4713_tx_tune_freq(struct si4713_device *sdev, u16 frequency) in si4713_tx_tune_freq() argument
541 err = si4713_send_command(sdev, SI4713_CMD_TX_TUNE_FREQ, in si4713_tx_tune_freq()
548 v4l2_dbg(1, debug, &sdev->sd, in si4713_tx_tune_freq()
552 err = si4713_wait_stc(sdev, TIMEOUT_TX_TUNE); in si4713_tx_tune_freq()
570 static int si4713_tx_tune_power(struct si4713_device *sdev, u8 power, in si4713_tx_tune_power() argument
592 err = si4713_send_command(sdev, SI4713_CMD_TX_TUNE_POWER, in si4713_tx_tune_power()
599 v4l2_dbg(1, debug, &sdev->sd, in si4713_tx_tune_power()
603 return si4713_wait_stc(sdev, TIMEOUT_TX_TUNE_POWER); in si4713_tx_tune_power()
618 static int si4713_tx_tune_measure(struct si4713_device *sdev, u16 frequency, in si4713_tx_tune_measure() argument
636 sdev->tune_rnl = DEFAULT_TUNE_RNL; in si4713_tx_tune_measure()
641 err = si4713_send_command(sdev, SI4713_CMD_TX_TUNE_MEASURE, in si4713_tx_tune_measure()
648 v4l2_dbg(1, debug, &sdev->sd, in si4713_tx_tune_measure()
652 return si4713_wait_stc(sdev, TIMEOUT_TX_TUNE); in si4713_tx_tune_measure()
669 static int si4713_tx_tune_status(struct si4713_device *sdev, u8 intack, in si4713_tx_tune_status() argument
682 err = si4713_send_command(sdev, SI4713_CMD_TX_TUNE_STATUS, in si4713_tx_tune_status()
687 v4l2_dbg(1, debug, &sdev->sd, in si4713_tx_tune_status()
690 sdev->frequency = *frequency; in si4713_tx_tune_status()
694 v4l2_dbg(1, debug, &sdev->sd, "%s: response: %d x 10 kHz " in si4713_tx_tune_status()
712 static int si4713_tx_rds_buff(struct si4713_device *sdev, u8 mode, u16 rdsb, in si4713_tx_rds_buff() argument
728 err = si4713_send_command(sdev, SI4713_CMD_TX_RDS_BUFF, in si4713_tx_rds_buff()
733 v4l2_dbg(1, debug, &sdev->sd, in si4713_tx_rds_buff()
736 v4l2_dbg(1, debug, &sdev->sd, "%s: response: interrupts" in si4713_tx_rds_buff()
751 static int si4713_tx_rds_ps(struct si4713_device *sdev, u8 psid, in si4713_tx_rds_ps() argument
765 err = si4713_send_command(sdev, SI4713_CMD_TX_RDS_PS, in si4713_tx_rds_ps()
772 v4l2_dbg(1, debug, &sdev->sd, "%s: status=0x%02x\n", __func__, val[0]); in si4713_tx_rds_ps()
777 static int si4713_set_power_state(struct si4713_device *sdev, u8 value) in si4713_set_power_state() argument
780 return si4713_powerup(sdev); in si4713_set_power_state()
781 return si4713_powerdown(sdev); in si4713_set_power_state()
784 static int si4713_set_mute(struct si4713_device *sdev, u16 mute) in si4713_set_mute() argument
790 if (sdev->power_state) in si4713_set_mute()
791 rval = si4713_write_property(sdev, in si4713_set_mute()
797 static int si4713_set_rds_ps_name(struct si4713_device *sdev, char *ps_name) in si4713_set_rds_ps_name() argument
806 if (sdev->power_state) { in si4713_set_rds_ps_name()
809 rval = si4713_tx_rds_ps(sdev, (i / (RDS_BLOCK / 2)), in si4713_set_rds_ps_name()
821 rval = si4713_write_property(sdev, in si4713_set_rds_ps_name()
827 rval = si4713_write_property(sdev, in si4713_set_rds_ps_name()
837 static int si4713_set_rds_radio_text(struct si4713_device *sdev, const char *rt) in si4713_set_rds_radio_text() argument
845 if (!sdev->power_state) in si4713_set_rds_radio_text()
848 rval = si4713_tx_rds_buff(sdev, RDS_BLOCK_CLEAR, 0, 0, 0, &left); in si4713_set_rds_radio_text()
870 rval = si4713_tx_rds_buff(sdev, RDS_BLOCK_LOAD, in si4713_set_rds_radio_text()
892 static int si4713_update_tune_status(struct si4713_device *sdev) in si4713_update_tune_status() argument
898 rval = si4713_tx_tune_status(sdev, 0x00, &f, &p, &a, &n); in si4713_update_tune_status()
908 sdev->tune_rnl = n; in si4713_update_tune_status()
914 static int si4713_choose_econtrol_action(struct si4713_device *sdev, u32 id, in si4713_choose_econtrol_action() argument
1041 static int si4713_setup(struct si4713_device *sdev) in si4713_setup() argument
1049 f.frequency = sdev->frequency ? sdev->frequency : DEFAULT_FREQUENCY; in si4713_setup()
1051 rval = si4713_s_frequency(&sdev->sd, &f); in si4713_setup()
1054 if (sdev->stereo) in si4713_setup()
1058 if (sdev->rds_enabled) in si4713_setup()
1060 si4713_s_modulator(&sdev->sd, &vm); in si4713_setup()
1069 static int si4713_initialize(struct si4713_device *sdev) in si4713_initialize() argument
1073 rval = si4713_set_power_state(sdev, POWER_ON); in si4713_initialize()
1077 rval = si4713_checkrev(sdev); in si4713_initialize()
1081 rval = si4713_set_power_state(sdev, POWER_OFF); in si4713_initialize()
1085 sdev->frequency = DEFAULT_FREQUENCY; in si4713_initialize()
1086 sdev->stereo = 1; in si4713_initialize()
1087 sdev->tune_rnl = DEFAULT_TUNE_RNL; in si4713_initialize()
1094 struct si4713_device *sdev = in si4713_s_ctrl() local
1110 ret = si4713_set_mute(sdev, ctrl->val); in si4713_s_ctrl()
1112 ret = si4713_set_power_state(sdev, POWER_DOWN); in si4713_s_ctrl()
1115 ret = si4713_set_power_state(sdev, POWER_UP); in si4713_s_ctrl()
1117 ret = si4713_set_mute(sdev, ctrl->val); in si4713_s_ctrl()
1119 ret = si4713_setup(sdev); in si4713_s_ctrl()
1125 if (!sdev->power_state) in si4713_s_ctrl()
1136 ret = si4713_set_rds_ps_name(sdev, ctrl->p_new.p_char); in si4713_s_ctrl()
1140 ret = si4713_set_rds_radio_text(sdev, ctrl->p_new.p_char); in si4713_s_ctrl()
1151 ret = si4713_tx_tune_power(sdev, in si4713_s_ctrl()
1152 sdev->tune_pwr_level->val, sdev->tune_ant_cap->val); in si4713_s_ctrl()
1155 sdev->tune_ant_cap->is_new = false; in si4713_s_ctrl()
1156 sdev->tune_pwr_level->is_new = false; in si4713_s_ctrl()
1162 if (sdev->rds_alt_freqs_enable->val) { in si4713_s_ctrl()
1163 val = sdev->rds_alt_freqs->p_new.p_u32[0]; in si4713_s_ctrl()
1168 ret = si4713_write_property(sdev, SI4713_TX_RDS_PS_AF, val); in si4713_s_ctrl()
1172 ret = si4713_choose_econtrol_action(sdev, ctrl->id, &bit, in si4713_s_ctrl()
1189 ret = si4713_read_property(sdev, property, &val); in si4713_s_ctrl()
1195 ret = si4713_write_property(sdev, property, val); in si4713_s_ctrl()
1210 struct si4713_device *sdev = to_si4713_device(sd); in si4713_ioctl() local
1222 if (sdev->power_state) { in si4713_ioctl()
1224 rval = si4713_tx_tune_measure(sdev, frequency, 0); in si4713_ioctl()
1228 rval = si4713_update_tune_status(sdev); in si4713_ioctl()
1232 rnl->rnl = sdev->tune_rnl; in si4713_ioctl()
1246 struct si4713_device *sdev = to_si4713_device(sd); in si4713_g_modulator() local
1249 if (!sdev) in si4713_g_modulator()
1263 if (sdev->power_state) { in si4713_g_modulator()
1266 rval = si4713_read_property(sdev, SI4713_TX_COMPONENT_ENABLE, in si4713_g_modulator()
1271 sdev->stereo = get_status_bit(comp_en, 1, 1 << 1); in si4713_g_modulator()
1275 if (sdev->stereo) in si4713_g_modulator()
1281 if (sdev->rds_enabled) in si4713_g_modulator()
1292 struct si4713_device *sdev = to_si4713_device(sd); in si4713_s_modulator() local
1297 if (!sdev) in si4713_s_modulator()
1313 if (sdev->power_state) { in si4713_s_modulator()
1314 rval = si4713_read_property(sdev, in si4713_s_modulator()
1322 rval = si4713_write_property(sdev, in si4713_s_modulator()
1328 sdev->stereo = stereo; in si4713_s_modulator()
1329 sdev->rds_enabled = rds; in si4713_s_modulator()
1337 struct si4713_device *sdev = to_si4713_device(sd); in si4713_g_frequency() local
1343 if (sdev->power_state) { in si4713_g_frequency()
1347 rval = si4713_tx_tune_status(sdev, 0x00, &freq, &p, &a, &n); in si4713_g_frequency()
1351 sdev->frequency = freq; in si4713_g_frequency()
1354 f->frequency = si4713_to_v4l2(sdev->frequency); in si4713_g_frequency()
1362 struct si4713_device *sdev = to_si4713_device(sd); in si4713_s_frequency() local
1372 if (sdev->power_state) { in si4713_s_frequency()
1373 rval = si4713_tx_tune_freq(sdev, frequency); in si4713_s_frequency()
1379 sdev->frequency = frequency; in si4713_s_frequency()
1422 struct si4713_device *sdev; in si4713_probe() local
1427 sdev = kzalloc(sizeof(*sdev), GFP_KERNEL); in si4713_probe()
1428 if (!sdev) { in si4713_probe()
1434 sdev->gpio_reset = -1; in si4713_probe()
1442 sdev->gpio_reset = pdata->gpio_reset; in si4713_probe()
1443 gpio_direction_output(sdev->gpio_reset, 0); in si4713_probe()
1444 sdev->supplies = pdata->supplies; in si4713_probe()
1447 for (i = 0; i < sdev->supplies; i++) in si4713_probe()
1448 sdev->supply_data[i].supply = pdata->supply_names[i]; in si4713_probe()
1450 rval = regulator_bulk_get(&client->dev, sdev->supplies, in si4713_probe()
1451 sdev->supply_data); in si4713_probe()
1457 v4l2_i2c_subdev_init(&sdev->sd, client, &si4713_subdev_ops); in si4713_probe()
1459 init_completion(&sdev->work); in si4713_probe()
1461 hdl = &sdev->ctrl_handler; in si4713_probe()
1463 sdev->mute = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1466 sdev->rds_pi = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1468 sdev->rds_pty = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1470 sdev->rds_compressed = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1472 sdev->rds_art_head = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1474 sdev->rds_stereo = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1476 sdev->rds_tp = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1478 sdev->rds_ta = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1480 sdev->rds_ms = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1482 sdev->rds_dyn_pty = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1484 sdev->rds_alt_freqs_enable = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1486 sdev->rds_alt_freqs = v4l2_ctrl_new_custom(hdl, &si4713_alt_freqs_ctrl, NULL); in si4713_probe()
1487 sdev->rds_deviation = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1495 sdev->rds_ps_name = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1502 sdev->rds_radio_text = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1505 sdev->limiter_enabled = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1507 sdev->limiter_release_time = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1510 sdev->limiter_deviation = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1514 sdev->compression_enabled = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1516 sdev->compression_gain = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1519 sdev->compression_threshold = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1523 sdev->compression_attack_time = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1526 sdev->compression_release_time = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1530 sdev->pilot_tone_enabled = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1532 sdev->pilot_tone_deviation = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1535 sdev->pilot_tone_freq = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1539 sdev->tune_preemphasis = v4l2_ctrl_new_std_menu(hdl, &si4713_ctrl_ops, in si4713_probe()
1542 sdev->tune_pwr_level = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1545 sdev->tune_ant_cap = v4l2_ctrl_new_std(hdl, &si4713_ctrl_ops, in si4713_probe()
1553 v4l2_ctrl_cluster(29, &sdev->mute); in si4713_probe()
1554 sdev->sd.ctrl_handler = hdl; in si4713_probe()
1559 client->name, sdev); in si4713_probe()
1561 v4l2_err(&sdev->sd, "Could not request IRQ\n"); in si4713_probe()
1564 v4l2_dbg(1, debug, &sdev->sd, "IRQ requested.\n"); in si4713_probe()
1566 v4l2_warn(&sdev->sd, "IRQ not configured. Using timeouts.\n"); in si4713_probe()
1569 rval = si4713_initialize(sdev); in si4713_probe()
1571 v4l2_err(&sdev->sd, "Failed to probe device information.\n"); in si4713_probe()
1579 free_irq(client->irq, sdev); in si4713_probe()
1583 regulator_bulk_free(sdev->supplies, sdev->supply_data); in si4713_probe()
1585 if (gpio_is_valid(sdev->gpio_reset)) in si4713_probe()
1586 gpio_free(sdev->gpio_reset); in si4713_probe()
1588 kfree(sdev); in si4713_probe()
1597 struct si4713_device *sdev = to_si4713_device(sd); in si4713_remove() local
1599 if (sdev->power_state) in si4713_remove()
1600 si4713_set_power_state(sdev, POWER_DOWN); in si4713_remove()
1603 free_irq(client->irq, sdev); in si4713_remove()
1607 regulator_bulk_free(sdev->supplies, sdev->supply_data); in si4713_remove()
1608 if (gpio_is_valid(sdev->gpio_reset)) in si4713_remove()
1609 gpio_free(sdev->gpio_reset); in si4713_remove()
1610 kfree(sdev); in si4713_remove()