aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/common/tuners
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2008-07-26 11:06:57 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-27 10:07:33 -0400
commitc39c1fd29373d204b11b71946d0f4c97e4974dd9 (patch)
tree7d199c0da52075b404f13cd9d2bef983f26c3f3c /drivers/media/common/tuners
parent59d27521c0f50fadf3382e2b325a7e8a04d9a770 (diff)
V4L/DVB (8531): mxl5007t: move i2c gate handling outside of mutex protected code blocks
There is no reason to protect the i2c gate handling within the mxl5007t state mutex. Thanks to Steven Toth for pointing this out. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/common/tuners')
-rw-r--r--drivers/media/common/tuners/mxl5007t.c45
1 files changed, 24 insertions, 21 deletions
diff --git a/drivers/media/common/tuners/mxl5007t.c b/drivers/media/common/tuners/mxl5007t.c
index f3b193ac6614..4a1ea5425850 100644
--- a/drivers/media/common/tuners/mxl5007t.c
+++ b/drivers/media/common/tuners/mxl5007t.c
@@ -660,11 +660,11 @@ static int mxl5007t_get_status(struct dvb_frontend *fe, u32 *status)
660 s32 rf_input_level; 660 s32 rf_input_level;
661 int ret; 661 int ret;
662 662
663 mutex_lock(&state->lock);
664
665 if (fe->ops.i2c_gate_ctrl) 663 if (fe->ops.i2c_gate_ctrl)
666 fe->ops.i2c_gate_ctrl(fe, 1); 664 fe->ops.i2c_gate_ctrl(fe, 1);
667 665
666 mutex_lock(&state->lock);
667
668 ret = mxl5007t_synth_lock_status(state, &rf_locked, &ref_locked); 668 ret = mxl5007t_synth_lock_status(state, &rf_locked, &ref_locked);
669 if (mxl_fail(ret)) 669 if (mxl_fail(ret))
670 goto fail; 670 goto fail;
@@ -676,10 +676,11 @@ static int mxl5007t_get_status(struct dvb_frontend *fe, u32 *status)
676 goto fail; 676 goto fail;
677 mxl_debug("rf input power: %d", rf_input_level); 677 mxl_debug("rf input power: %d", rf_input_level);
678fail: 678fail:
679 mutex_unlock(&state->lock);
680
679 if (fe->ops.i2c_gate_ctrl) 681 if (fe->ops.i2c_gate_ctrl)
680 fe->ops.i2c_gate_ctrl(fe, 0); 682 fe->ops.i2c_gate_ctrl(fe, 0);
681 683
682 mutex_unlock(&state->lock);
683 return ret; 684 return ret;
684} 685}
685 686
@@ -730,11 +731,11 @@ static int mxl5007t_set_params(struct dvb_frontend *fe,
730 return -EINVAL; 731 return -EINVAL;
731 } 732 }
732 733
733 mutex_lock(&state->lock);
734
735 if (fe->ops.i2c_gate_ctrl) 734 if (fe->ops.i2c_gate_ctrl)
736 fe->ops.i2c_gate_ctrl(fe, 1); 735 fe->ops.i2c_gate_ctrl(fe, 1);
737 736
737 mutex_lock(&state->lock);
738
738 ret = mxl5007t_tuner_init(state, mode); 739 ret = mxl5007t_tuner_init(state, mode);
739 if (mxl_fail(ret)) 740 if (mxl_fail(ret))
740 goto fail; 741 goto fail;
@@ -747,10 +748,11 @@ static int mxl5007t_set_params(struct dvb_frontend *fe,
747 state->bandwidth = (fe->ops.info.type == FE_OFDM) ? 748 state->bandwidth = (fe->ops.info.type == FE_OFDM) ?
748 params->u.ofdm.bandwidth : 0; 749 params->u.ofdm.bandwidth : 0;
749fail: 750fail:
751 mutex_unlock(&state->lock);
752
750 if (fe->ops.i2c_gate_ctrl) 753 if (fe->ops.i2c_gate_ctrl)
751 fe->ops.i2c_gate_ctrl(fe, 0); 754 fe->ops.i2c_gate_ctrl(fe, 0);
752 755
753 mutex_unlock(&state->lock);
754 return ret; 756 return ret;
755} 757}
756 758
@@ -802,11 +804,11 @@ static int mxl5007t_set_analog_params(struct dvb_frontend *fe,
802 } 804 }
803 mxl_debug("setting mxl5007 to system %s", mode_name); 805 mxl_debug("setting mxl5007 to system %s", mode_name);
804 806
805 mutex_lock(&state->lock);
806
807 if (fe->ops.i2c_gate_ctrl) 807 if (fe->ops.i2c_gate_ctrl)
808 fe->ops.i2c_gate_ctrl(fe, 1); 808 fe->ops.i2c_gate_ctrl(fe, 1);
809 809
810 mutex_lock(&state->lock);
811
810 ret = mxl5007t_tuner_init(state, cable ? cbl_mode : ota_mode); 812 ret = mxl5007t_tuner_init(state, cable ? cbl_mode : ota_mode);
811 if (mxl_fail(ret)) 813 if (mxl_fail(ret))
812 goto fail; 814 goto fail;
@@ -818,10 +820,11 @@ static int mxl5007t_set_analog_params(struct dvb_frontend *fe,
818 state->frequency = freq; 820 state->frequency = freq;
819 state->bandwidth = 0; 821 state->bandwidth = 0;
820fail: 822fail:
823 mutex_unlock(&state->lock);
824
821 if (fe->ops.i2c_gate_ctrl) 825 if (fe->ops.i2c_gate_ctrl)
822 fe->ops.i2c_gate_ctrl(fe, 0); 826 fe->ops.i2c_gate_ctrl(fe, 0);
823 827
824 mutex_unlock(&state->lock);
825 return ret; 828 return ret;
826} 829}
827 830
@@ -833,11 +836,11 @@ static int mxl5007t_init(struct dvb_frontend *fe)
833 int ret; 836 int ret;
834 u8 d; 837 u8 d;
835 838
836 mutex_lock(&state->lock);
837
838 if (fe->ops.i2c_gate_ctrl) 839 if (fe->ops.i2c_gate_ctrl)
839 fe->ops.i2c_gate_ctrl(fe, 1); 840 fe->ops.i2c_gate_ctrl(fe, 1);
840 841
842 mutex_lock(&state->lock);
843
841 ret = mxl5007t_read_reg(state, 0x05, &d); 844 ret = mxl5007t_read_reg(state, 0x05, &d);
842 if (mxl_fail(ret)) 845 if (mxl_fail(ret))
843 goto fail; 846 goto fail;
@@ -845,11 +848,11 @@ static int mxl5007t_init(struct dvb_frontend *fe)
845 ret = mxl5007t_write_reg(state, 0x05, d | 0x01); 848 ret = mxl5007t_write_reg(state, 0x05, d | 0x01);
846 mxl_fail(ret); 849 mxl_fail(ret);
847fail: 850fail:
851 mutex_unlock(&state->lock);
852
848 if (fe->ops.i2c_gate_ctrl) 853 if (fe->ops.i2c_gate_ctrl)
849 fe->ops.i2c_gate_ctrl(fe, 0); 854 fe->ops.i2c_gate_ctrl(fe, 0);
850 855
851 mutex_unlock(&state->lock);
852
853 return ret; 856 return ret;
854} 857}
855 858
@@ -859,11 +862,11 @@ static int mxl5007t_sleep(struct dvb_frontend *fe)
859 int ret; 862 int ret;
860 u8 d; 863 u8 d;
861 864
862 mutex_lock(&state->lock);
863
864 if (fe->ops.i2c_gate_ctrl) 865 if (fe->ops.i2c_gate_ctrl)
865 fe->ops.i2c_gate_ctrl(fe, 1); 866 fe->ops.i2c_gate_ctrl(fe, 1);
866 867
868 mutex_lock(&state->lock);
869
867 ret = mxl5007t_read_reg(state, 0x05, &d); 870 ret = mxl5007t_read_reg(state, 0x05, &d);
868 if (mxl_fail(ret)) 871 if (mxl_fail(ret))
869 goto fail; 872 goto fail;
@@ -871,11 +874,11 @@ static int mxl5007t_sleep(struct dvb_frontend *fe)
871 ret = mxl5007t_write_reg(state, 0x05, d & ~0x01); 874 ret = mxl5007t_write_reg(state, 0x05, d & ~0x01);
872 mxl_fail(ret); 875 mxl_fail(ret);
873fail: 876fail:
877 mutex_unlock(&state->lock);
878
874 if (fe->ops.i2c_gate_ctrl) 879 if (fe->ops.i2c_gate_ctrl)
875 fe->ops.i2c_gate_ctrl(fe, 0); 880 fe->ops.i2c_gate_ctrl(fe, 0);
876 881
877 mutex_unlock(&state->lock);
878
879 return ret; 882 return ret;
880} 883}
881 884
@@ -995,18 +998,18 @@ struct dvb_frontend *mxl5007t_attach(struct dvb_frontend *fe,
995 998
996 mutex_init(&state->lock); 999 mutex_init(&state->lock);
997 1000
998 mutex_lock(&state->lock);
999
1000 if (fe->ops.i2c_gate_ctrl) 1001 if (fe->ops.i2c_gate_ctrl)
1001 fe->ops.i2c_gate_ctrl(fe, 1); 1002 fe->ops.i2c_gate_ctrl(fe, 1);
1002 1003
1004 mutex_lock(&state->lock);
1005
1003 ret = mxl5007t_get_chip_id(state); 1006 ret = mxl5007t_get_chip_id(state);
1004 1007
1008 mutex_unlock(&state->lock);
1009
1005 if (fe->ops.i2c_gate_ctrl) 1010 if (fe->ops.i2c_gate_ctrl)
1006 fe->ops.i2c_gate_ctrl(fe, 0); 1011 fe->ops.i2c_gate_ctrl(fe, 0);
1007 1012
1008 mutex_unlock(&state->lock);
1009
1010 /* check return value of mxl5007t_get_chip_id */ 1013 /* check return value of mxl5007t_get_chip_id */
1011 if (mxl_fail(ret)) 1014 if (mxl_fail(ret))
1012 goto fail; 1015 goto fail;