aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/radio/wl128x/fmdrv_rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/radio/wl128x/fmdrv_rx.c')
-rw-r--r--drivers/media/radio/wl128x/fmdrv_rx.c84
1 files changed, 43 insertions, 41 deletions
diff --git a/drivers/media/radio/wl128x/fmdrv_rx.c b/drivers/media/radio/wl128x/fmdrv_rx.c
index ec529b55b04..43fb72291be 100644
--- a/drivers/media/radio/wl128x/fmdrv_rx.c
+++ b/drivers/media/radio/wl128x/fmdrv_rx.c
@@ -43,12 +43,13 @@ void fm_rx_reset_station_info(struct fmdev *fmdev)
43 fmdev->rx.stat_info.af_list_max = 0; 43 fmdev->rx.stat_info.af_list_max = 0;
44} 44}
45 45
46u32 fm_rx_set_freq(struct fmdev *fmdev, u32 freq) 46int fm_rx_set_freq(struct fmdev *fmdev, u32 freq)
47{ 47{
48 unsigned long timeleft; 48 unsigned long timeleft;
49 u16 payload, curr_frq, intr_flag; 49 u16 payload, curr_frq, intr_flag;
50 u32 curr_frq_in_khz; 50 u32 curr_frq_in_khz;
51 u32 ret, resp_len; 51 u32 resp_len;
52 int ret;
52 53
53 if (freq < fmdev->rx.region.bot_freq || freq > fmdev->rx.region.top_freq) { 54 if (freq < fmdev->rx.region.bot_freq || freq > fmdev->rx.region.top_freq) {
54 fmerr("Invalid frequency %d\n", freq); 55 fmerr("Invalid frequency %d\n", freq);
@@ -141,10 +142,10 @@ exit:
141 return ret; 142 return ret;
142} 143}
143 144
144static u32 fm_rx_set_channel_spacing(struct fmdev *fmdev, u32 spacing) 145static int fm_rx_set_channel_spacing(struct fmdev *fmdev, u32 spacing)
145{ 146{
146 u16 payload; 147 u16 payload;
147 u32 ret; 148 int ret;
148 149
149 if (spacing > 0 && spacing <= 50000) 150 if (spacing > 0 && spacing <= 50000)
150 spacing = FM_CHANNEL_SPACING_50KHZ; 151 spacing = FM_CHANNEL_SPACING_50KHZ;
@@ -165,7 +166,7 @@ static u32 fm_rx_set_channel_spacing(struct fmdev *fmdev, u32 spacing)
165 return ret; 166 return ret;
166} 167}
167 168
168u32 fm_rx_seek(struct fmdev *fmdev, u32 seek_upward, 169int fm_rx_seek(struct fmdev *fmdev, u32 seek_upward,
169 u32 wrap_around, u32 spacing) 170 u32 wrap_around, u32 spacing)
170{ 171{
171 u32 resp_len; 172 u32 resp_len;
@@ -173,7 +174,7 @@ u32 fm_rx_seek(struct fmdev *fmdev, u32 seek_upward,
173 u16 payload, int_reason, intr_flag; 174 u16 payload, int_reason, intr_flag;
174 u16 offset, space_idx; 175 u16 offset, space_idx;
175 unsigned long timeleft; 176 unsigned long timeleft;
176 u32 ret; 177 int ret;
177 178
178 /* Set channel spacing */ 179 /* Set channel spacing */
179 ret = fm_rx_set_channel_spacing(fmdev, spacing); 180 ret = fm_rx_set_channel_spacing(fmdev, spacing);
@@ -296,10 +297,10 @@ again:
296 return ret; 297 return ret;
297} 298}
298 299
299u32 fm_rx_set_volume(struct fmdev *fmdev, u16 vol_to_set) 300int fm_rx_set_volume(struct fmdev *fmdev, u16 vol_to_set)
300{ 301{
301 u16 payload; 302 u16 payload;
302 u32 ret; 303 int ret;
303 304
304 if (fmdev->curr_fmmode != FM_MODE_RX) 305 if (fmdev->curr_fmmode != FM_MODE_RX)
305 return -EPERM; 306 return -EPERM;
@@ -322,7 +323,7 @@ u32 fm_rx_set_volume(struct fmdev *fmdev, u16 vol_to_set)
322} 323}
323 324
324/* Get volume */ 325/* Get volume */
325u32 fm_rx_get_volume(struct fmdev *fmdev, u16 *curr_vol) 326int fm_rx_get_volume(struct fmdev *fmdev, u16 *curr_vol)
326{ 327{
327 if (fmdev->curr_fmmode != FM_MODE_RX) 328 if (fmdev->curr_fmmode != FM_MODE_RX)
328 return -EPERM; 329 return -EPERM;
@@ -338,7 +339,7 @@ u32 fm_rx_get_volume(struct fmdev *fmdev, u16 *curr_vol)
338} 339}
339 340
340/* To get current band's bottom and top frequency */ 341/* To get current band's bottom and top frequency */
341u32 fm_rx_get_band_freq_range(struct fmdev *fmdev, u32 *bot_freq, u32 *top_freq) 342int fm_rx_get_band_freq_range(struct fmdev *fmdev, u32 *bot_freq, u32 *top_freq)
342{ 343{
343 if (bot_freq != NULL) 344 if (bot_freq != NULL)
344 *bot_freq = fmdev->rx.region.bot_freq; 345 *bot_freq = fmdev->rx.region.bot_freq;
@@ -356,11 +357,11 @@ void fm_rx_get_region(struct fmdev *fmdev, u8 *region)
356} 357}
357 358
358/* Sets band (0-Europe/US; 1-Japan) */ 359/* Sets band (0-Europe/US; 1-Japan) */
359u32 fm_rx_set_region(struct fmdev *fmdev, u8 region_to_set) 360int fm_rx_set_region(struct fmdev *fmdev, u8 region_to_set)
360{ 361{
361 u16 payload; 362 u16 payload;
362 u32 new_frq = 0; 363 u32 new_frq = 0;
363 u32 ret; 364 int ret;
364 365
365 if (region_to_set != FM_BAND_EUROPE_US && 366 if (region_to_set != FM_BAND_EUROPE_US &&
366 region_to_set != FM_BAND_JAPAN) { 367 region_to_set != FM_BAND_JAPAN) {
@@ -399,7 +400,7 @@ u32 fm_rx_set_region(struct fmdev *fmdev, u8 region_to_set)
399} 400}
400 401
401/* Reads current mute mode (Mute Off/On/Attenuate)*/ 402/* Reads current mute mode (Mute Off/On/Attenuate)*/
402u32 fm_rx_get_mute_mode(struct fmdev *fmdev, u8 *curr_mute_mode) 403int fm_rx_get_mute_mode(struct fmdev *fmdev, u8 *curr_mute_mode)
403{ 404{
404 if (fmdev->curr_fmmode != FM_MODE_RX) 405 if (fmdev->curr_fmmode != FM_MODE_RX)
405 return -EPERM; 406 return -EPERM;
@@ -414,10 +415,10 @@ u32 fm_rx_get_mute_mode(struct fmdev *fmdev, u8 *curr_mute_mode)
414 return 0; 415 return 0;
415} 416}
416 417
417static u32 fm_config_rx_mute_reg(struct fmdev *fmdev) 418static int fm_config_rx_mute_reg(struct fmdev *fmdev)
418{ 419{
419 u16 payload, muteval; 420 u16 payload, muteval;
420 u32 ret; 421 int ret;
421 422
422 muteval = 0; 423 muteval = 0;
423 switch (fmdev->rx.mute_mode) { 424 switch (fmdev->rx.mute_mode) {
@@ -448,10 +449,10 @@ static u32 fm_config_rx_mute_reg(struct fmdev *fmdev)
448} 449}
449 450
450/* Configures mute mode (Mute Off/On/Attenuate) */ 451/* Configures mute mode (Mute Off/On/Attenuate) */
451u32 fm_rx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset) 452int fm_rx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset)
452{ 453{
453 u8 org_state; 454 u8 org_state;
454 u32 ret; 455 int ret;
455 456
456 if (fmdev->rx.mute_mode == mute_mode_toset) 457 if (fmdev->rx.mute_mode == mute_mode_toset)
457 return 0; 458 return 0;
@@ -469,7 +470,7 @@ u32 fm_rx_set_mute_mode(struct fmdev *fmdev, u8 mute_mode_toset)
469} 470}
470 471
471/* Gets RF dependent soft mute mode enable/disable status */ 472/* Gets RF dependent soft mute mode enable/disable status */
472u32 fm_rx_get_rfdepend_softmute(struct fmdev *fmdev, u8 *curr_mute_mode) 473int fm_rx_get_rfdepend_softmute(struct fmdev *fmdev, u8 *curr_mute_mode)
473{ 474{
474 if (fmdev->curr_fmmode != FM_MODE_RX) 475 if (fmdev->curr_fmmode != FM_MODE_RX)
475 return -EPERM; 476 return -EPERM;
@@ -485,10 +486,10 @@ u32 fm_rx_get_rfdepend_softmute(struct fmdev *fmdev, u8 *curr_mute_mode)
485} 486}
486 487
487/* Sets RF dependent soft mute mode */ 488/* Sets RF dependent soft mute mode */
488u32 fm_rx_set_rfdepend_softmute(struct fmdev *fmdev, u8 rfdepend_mute) 489int fm_rx_set_rfdepend_softmute(struct fmdev *fmdev, u8 rfdepend_mute)
489{ 490{
490 u8 org_state; 491 u8 org_state;
491 u32 ret; 492 int ret;
492 493
493 if (fmdev->curr_fmmode != FM_MODE_RX) 494 if (fmdev->curr_fmmode != FM_MODE_RX)
494 return -EPERM; 495 return -EPERM;
@@ -514,11 +515,11 @@ u32 fm_rx_set_rfdepend_softmute(struct fmdev *fmdev, u8 rfdepend_mute)
514} 515}
515 516
516/* Returns the signal strength level of current channel */ 517/* Returns the signal strength level of current channel */
517u32 fm_rx_get_rssi_level(struct fmdev *fmdev, u16 *rssilvl) 518int fm_rx_get_rssi_level(struct fmdev *fmdev, u16 *rssilvl)
518{ 519{
519 u16 curr_rssi_lel; 520 u16 curr_rssi_lel;
520 u32 resp_len; 521 u32 resp_len;
521 u32 ret; 522 int ret;
522 523
523 if (rssilvl == NULL) { 524 if (rssilvl == NULL) {
524 fmerr("Invalid memory\n"); 525 fmerr("Invalid memory\n");
@@ -539,10 +540,10 @@ u32 fm_rx_get_rssi_level(struct fmdev *fmdev, u16 *rssilvl)
539 * Sets the signal strength level that once reached 540 * Sets the signal strength level that once reached
540 * will stop the auto search process 541 * will stop the auto search process
541 */ 542 */
542u32 fm_rx_set_rssi_threshold(struct fmdev *fmdev, short rssi_lvl_toset) 543int fm_rx_set_rssi_threshold(struct fmdev *fmdev, short rssi_lvl_toset)
543{ 544{
544 u16 payload; 545 u16 payload;
545 u32 ret; 546 int ret;
546 547
547 if (rssi_lvl_toset < FM_RX_RSSI_THRESHOLD_MIN || 548 if (rssi_lvl_toset < FM_RX_RSSI_THRESHOLD_MIN ||
548 rssi_lvl_toset > FM_RX_RSSI_THRESHOLD_MAX) { 549 rssi_lvl_toset > FM_RX_RSSI_THRESHOLD_MAX) {
@@ -561,7 +562,7 @@ u32 fm_rx_set_rssi_threshold(struct fmdev *fmdev, short rssi_lvl_toset)
561} 562}
562 563
563/* Returns current RX RSSI threshold value */ 564/* Returns current RX RSSI threshold value */
564u32 fm_rx_get_rssi_threshold(struct fmdev *fmdev, short *curr_rssi_lvl) 565int fm_rx_get_rssi_threshold(struct fmdev *fmdev, short *curr_rssi_lvl)
565{ 566{
566 if (fmdev->curr_fmmode != FM_MODE_RX) 567 if (fmdev->curr_fmmode != FM_MODE_RX)
567 return -EPERM; 568 return -EPERM;
@@ -577,10 +578,10 @@ u32 fm_rx_get_rssi_threshold(struct fmdev *fmdev, short *curr_rssi_lvl)
577} 578}
578 579
579/* Sets RX stereo/mono modes */ 580/* Sets RX stereo/mono modes */
580u32 fm_rx_set_stereo_mono(struct fmdev *fmdev, u16 mode) 581int fm_rx_set_stereo_mono(struct fmdev *fmdev, u16 mode)
581{ 582{
582 u16 payload; 583 u16 payload;
583 u32 ret; 584 int ret;
584 585
585 if (mode != FM_STEREO_MODE && mode != FM_MONO_MODE) { 586 if (mode != FM_STEREO_MODE && mode != FM_MONO_MODE) {
586 fmerr("Invalid mode\n"); 587 fmerr("Invalid mode\n");
@@ -605,10 +606,11 @@ u32 fm_rx_set_stereo_mono(struct fmdev *fmdev, u16 mode)
605} 606}
606 607
607/* Gets current RX stereo/mono mode */ 608/* Gets current RX stereo/mono mode */
608u32 fm_rx_get_stereo_mono(struct fmdev *fmdev, u16 *mode) 609int fm_rx_get_stereo_mono(struct fmdev *fmdev, u16 *mode)
609{ 610{
610 u16 curr_mode; 611 u16 curr_mode;
611 u32 ret, resp_len; 612 u32 resp_len;
613 int ret;
612 614
613 if (mode == NULL) { 615 if (mode == NULL) {
614 fmerr("Invalid memory\n"); 616 fmerr("Invalid memory\n");
@@ -626,10 +628,10 @@ u32 fm_rx_get_stereo_mono(struct fmdev *fmdev, u16 *mode)
626} 628}
627 629
628/* Choose RX de-emphasis filter mode (50us/75us) */ 630/* Choose RX de-emphasis filter mode (50us/75us) */
629u32 fm_rx_set_deemphasis_mode(struct fmdev *fmdev, u16 mode) 631int fm_rx_set_deemphasis_mode(struct fmdev *fmdev, u16 mode)
630{ 632{
631 u16 payload; 633 u16 payload;
632 u32 ret; 634 int ret;
633 635
634 if (fmdev->curr_fmmode != FM_MODE_RX) 636 if (fmdev->curr_fmmode != FM_MODE_RX)
635 return -EPERM; 637 return -EPERM;
@@ -652,7 +654,7 @@ u32 fm_rx_set_deemphasis_mode(struct fmdev *fmdev, u16 mode)
652} 654}
653 655
654/* Gets current RX de-emphasis filter mode */ 656/* Gets current RX de-emphasis filter mode */
655u32 fm_rx_get_deemph_mode(struct fmdev *fmdev, u16 *curr_deemphasis_mode) 657int fm_rx_get_deemph_mode(struct fmdev *fmdev, u16 *curr_deemphasis_mode)
656{ 658{
657 if (fmdev->curr_fmmode != FM_MODE_RX) 659 if (fmdev->curr_fmmode != FM_MODE_RX)
658 return -EPERM; 660 return -EPERM;
@@ -668,10 +670,10 @@ u32 fm_rx_get_deemph_mode(struct fmdev *fmdev, u16 *curr_deemphasis_mode)
668} 670}
669 671
670/* Enable/Disable RX RDS */ 672/* Enable/Disable RX RDS */
671u32 fm_rx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis) 673int fm_rx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis)
672{ 674{
673 u16 payload; 675 u16 payload;
674 u32 ret; 676 int ret;
675 677
676 if (rds_en_dis != FM_RDS_ENABLE && rds_en_dis != FM_RDS_DISABLE) { 678 if (rds_en_dis != FM_RDS_ENABLE && rds_en_dis != FM_RDS_DISABLE) {
677 fmerr("Invalid rds option\n"); 679 fmerr("Invalid rds option\n");
@@ -743,7 +745,7 @@ u32 fm_rx_set_rds_mode(struct fmdev *fmdev, u8 rds_en_dis)
743} 745}
744 746
745/* Returns current RX RDS enable/disable status */ 747/* Returns current RX RDS enable/disable status */
746u32 fm_rx_get_rds_mode(struct fmdev *fmdev, u8 *curr_rds_en_dis) 748int fm_rx_get_rds_mode(struct fmdev *fmdev, u8 *curr_rds_en_dis)
747{ 749{
748 if (fmdev->curr_fmmode != FM_MODE_RX) 750 if (fmdev->curr_fmmode != FM_MODE_RX)
749 return -EPERM; 751 return -EPERM;
@@ -759,10 +761,10 @@ u32 fm_rx_get_rds_mode(struct fmdev *fmdev, u8 *curr_rds_en_dis)
759} 761}
760 762
761/* Sets RDS operation mode (RDS/RDBS) */ 763/* Sets RDS operation mode (RDS/RDBS) */
762u32 fm_rx_set_rds_system(struct fmdev *fmdev, u8 rds_mode) 764int fm_rx_set_rds_system(struct fmdev *fmdev, u8 rds_mode)
763{ 765{
764 u16 payload; 766 u16 payload;
765 u32 ret; 767 int ret;
766 768
767 if (fmdev->curr_fmmode != FM_MODE_RX) 769 if (fmdev->curr_fmmode != FM_MODE_RX)
768 return -EPERM; 770 return -EPERM;
@@ -784,7 +786,7 @@ u32 fm_rx_set_rds_system(struct fmdev *fmdev, u8 rds_mode)
784} 786}
785 787
786/* Returns current RDS operation mode */ 788/* Returns current RDS operation mode */
787u32 fm_rx_get_rds_system(struct fmdev *fmdev, u8 *rds_mode) 789int fm_rx_get_rds_system(struct fmdev *fmdev, u8 *rds_mode)
788{ 790{
789 if (fmdev->curr_fmmode != FM_MODE_RX) 791 if (fmdev->curr_fmmode != FM_MODE_RX)
790 return -EPERM; 792 return -EPERM;
@@ -800,10 +802,10 @@ u32 fm_rx_get_rds_system(struct fmdev *fmdev, u8 *rds_mode)
800} 802}
801 803
802/* Configures Alternate Frequency switch mode */ 804/* Configures Alternate Frequency switch mode */
803u32 fm_rx_set_af_switch(struct fmdev *fmdev, u8 af_mode) 805int fm_rx_set_af_switch(struct fmdev *fmdev, u8 af_mode)
804{ 806{
805 u16 payload; 807 u16 payload;
806 u32 ret; 808 int ret;
807 809
808 if (fmdev->curr_fmmode != FM_MODE_RX) 810 if (fmdev->curr_fmmode != FM_MODE_RX)
809 return -EPERM; 811 return -EPERM;
@@ -831,7 +833,7 @@ u32 fm_rx_set_af_switch(struct fmdev *fmdev, u8 af_mode)
831} 833}
832 834
833/* Returns Alternate Frequency switch status */ 835/* Returns Alternate Frequency switch status */
834u32 fm_rx_get_af_switch(struct fmdev *fmdev, u8 *af_mode) 836int fm_rx_get_af_switch(struct fmdev *fmdev, u8 *af_mode)
835{ 837{
836 if (fmdev->curr_fmmode != FM_MODE_RX) 838 if (fmdev->curr_fmmode != FM_MODE_RX)
837 return -EPERM; 839 return -EPERM;