diff options
author | Antti Palosaari <crope@iki.fi> | 2013-06-04 17:26:54 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-06-08 20:58:51 -0400 |
commit | 526ca8dc6ad844550e037841bd5f7090db9e1d4f (patch) | |
tree | 1fc8b428690474fe543407b97e2c6cd9ac2492f3 /drivers/media/usb/dvb-usb-v2/rtl28xxu.c | |
parent | bc6fc53de8935031078c50b8a06324aeaf1b4034 (diff) |
[media] rtl28xxu: use masked reg write where possible
Use masked register write inside rtl2832u_power_ctrl().
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/usb/dvb-usb-v2/rtl28xxu.c')
-rw-r--r-- | drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 72 |
1 files changed, 16 insertions, 56 deletions
diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c index 04da6be4de27..6f5a3d0c818f 100644 --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c | |||
@@ -1041,67 +1041,34 @@ err: | |||
1041 | static int rtl2832u_power_ctrl(struct dvb_usb_device *d, int onoff) | 1041 | static int rtl2832u_power_ctrl(struct dvb_usb_device *d, int onoff) |
1042 | { | 1042 | { |
1043 | int ret; | 1043 | int ret; |
1044 | u8 val; | ||
1045 | 1044 | ||
1046 | dev_dbg(&d->udev->dev, "%s: onoff=%d\n", __func__, onoff); | 1045 | dev_dbg(&d->udev->dev, "%s: onoff=%d\n", __func__, onoff); |
1047 | 1046 | ||
1048 | if (onoff) { | 1047 | if (onoff) { |
1049 | /* set output values */ | 1048 | /* GPIO3=1, GPIO4=0 */ |
1050 | ret = rtl28xx_rd_reg(d, SYS_GPIO_OUT_VAL, &val); | 1049 | ret = rtl28xx_wr_reg_mask(d, SYS_GPIO_OUT_VAL, 0x08, 0x18); |
1051 | if (ret) | ||
1052 | goto err; | ||
1053 | |||
1054 | val |= 0x08; | ||
1055 | val &= 0xef; | ||
1056 | |||
1057 | ret = rtl28xx_wr_reg(d, SYS_GPIO_OUT_VAL, val); | ||
1058 | if (ret) | ||
1059 | goto err; | ||
1060 | |||
1061 | /* demod_ctl_1 */ | ||
1062 | ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL1, &val); | ||
1063 | if (ret) | ||
1064 | goto err; | ||
1065 | |||
1066 | val &= 0xef; | ||
1067 | |||
1068 | ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL1, val); | ||
1069 | if (ret) | ||
1070 | goto err; | ||
1071 | |||
1072 | /* demod control */ | ||
1073 | /* PLL enable */ | ||
1074 | ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val); | ||
1075 | if (ret) | 1050 | if (ret) |
1076 | goto err; | 1051 | goto err; |
1077 | 1052 | ||
1078 | /* bit 7 to 1 */ | 1053 | /* suspend? */ |
1079 | val |= 0x80; | 1054 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL1, 0x00, 0x10); |
1080 | |||
1081 | ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val); | ||
1082 | if (ret) | 1055 | if (ret) |
1083 | goto err; | 1056 | goto err; |
1084 | 1057 | ||
1085 | ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val); | 1058 | /* enable PLL */ |
1059 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL, 0x80, 0x80); | ||
1086 | if (ret) | 1060 | if (ret) |
1087 | goto err; | 1061 | goto err; |
1088 | 1062 | ||
1089 | val |= 0x20; | 1063 | /* disable reset */ |
1090 | 1064 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL, 0x20, 0x20); | |
1091 | ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val); | ||
1092 | if (ret) | 1065 | if (ret) |
1093 | goto err; | 1066 | goto err; |
1094 | 1067 | ||
1095 | mdelay(5); | 1068 | mdelay(5); |
1096 | 1069 | ||
1097 | /*enable ADC_Q and ADC_I */ | 1070 | /* enable ADC */ |
1098 | ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val); | 1071 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL, 0x48, 0x48); |
1099 | if (ret) | ||
1100 | goto err; | ||
1101 | |||
1102 | val |= 0x48; | ||
1103 | |||
1104 | ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val); | ||
1105 | if (ret) | 1072 | if (ret) |
1106 | goto err; | 1073 | goto err; |
1107 | 1074 | ||
@@ -1114,25 +1081,18 @@ static int rtl2832u_power_ctrl(struct dvb_usb_device *d, int onoff) | |||
1114 | if (ret) | 1081 | if (ret) |
1115 | goto err; | 1082 | goto err; |
1116 | } else { | 1083 | } else { |
1117 | /* set output values */ | 1084 | /* GPIO4=1 */ |
1118 | ret = rtl28xx_rd_reg(d, SYS_GPIO_OUT_VAL, &val); | 1085 | ret = rtl28xx_wr_reg_mask(d, SYS_GPIO_OUT_VAL, 0x10, 0x10); |
1119 | if (ret) | ||
1120 | goto err; | ||
1121 | |||
1122 | val |= 0x10; | ||
1123 | |||
1124 | ret = rtl28xx_wr_reg(d, SYS_GPIO_OUT_VAL, val); | ||
1125 | if (ret) | 1086 | if (ret) |
1126 | goto err; | 1087 | goto err; |
1127 | 1088 | ||
1128 | /* demod control */ | 1089 | /* disable ADC */ |
1129 | ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val); | 1090 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL, 0x00, 0x48); |
1130 | if (ret) | 1091 | if (ret) |
1131 | goto err; | 1092 | goto err; |
1132 | 1093 | ||
1133 | val &= 0x37; | 1094 | /* disable PLL */ |
1134 | 1095 | ret = rtl28xx_wr_reg_mask(d, SYS_DEMOD_CTL, 0x00, 0x80); | |
1135 | ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val); | ||
1136 | if (ret) | 1096 | if (ret) |
1137 | goto err; | 1097 | goto err; |
1138 | 1098 | ||