diff options
author | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2014-10-28 09:21:48 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-03-03 08:34:12 -0500 |
commit | ee0133eea0238067dab19587de7d88e4a3ea77e4 (patch) | |
tree | 2a69a843c4edafdbdbada87a765971fe63d5015d | |
parent | a132fef816606ebe9d20895b1535582bfede12a4 (diff) |
[media] lgdt3306a: properly handle I/O errors
Fixes the following smatch errors:
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_set_if':
drivers/media/dvb-frontends/lgdt3306a.c:695:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_monitor_vsb':
drivers/media/dvb-frontends/lgdt3306a.c:1033:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_check_oper_mode':
drivers/media/dvb-frontends/lgdt3306a.c:1082:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_check_lock_status':
drivers/media/dvb-frontends/lgdt3306a.c:1109:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_check_neverlock_status':
drivers/media/dvb-frontends/lgdt3306a.c:1185:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_pre_monitoring':
drivers/media/dvb-frontends/lgdt3306a.c:1199:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
drivers/media/dvb-frontends/lgdt3306a.c: In function 'lgdt3306a_get_packet_error':
drivers/media/dvb-frontends/lgdt3306a.c:1310:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
int ret;
^
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r-- | drivers/media/dvb-frontends/lgdt3306a.c | 84 |
1 files changed, 79 insertions, 5 deletions
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c index 92affe124a8d..d1a914de4180 100644 --- a/drivers/media/dvb-frontends/lgdt3306a.c +++ b/drivers/media/dvb-frontends/lgdt3306a.c | |||
@@ -734,7 +734,11 @@ static int lgdt3306a_set_if(struct lgdt3306a_state *state, | |||
734 | break; | 734 | break; |
735 | } | 735 | } |
736 | ret = lgdt3306a_write_reg(state, 0x0010, nco1); | 736 | ret = lgdt3306a_write_reg(state, 0x0010, nco1); |
737 | if (ret) | ||
738 | return ret; | ||
737 | ret = lgdt3306a_write_reg(state, 0x0011, nco2); | 739 | ret = lgdt3306a_write_reg(state, 0x0011, nco2); |
740 | if (ret) | ||
741 | return ret; | ||
738 | 742 | ||
739 | lg_dbg("if_freq=%d KHz->[%04x]\n", if_freq_khz, nco1<<8 | nco2); | 743 | lg_dbg("if_freq=%d KHz->[%04x]\n", if_freq_khz, nco1<<8 | nco2); |
740 | 744 | ||
@@ -1027,7 +1031,7 @@ static enum dvbfe_algo lgdt3306a_get_frontend_algo(struct dvb_frontend *fe) | |||
1027 | } | 1031 | } |
1028 | 1032 | ||
1029 | /* ------------------------------------------------------------------------ */ | 1033 | /* ------------------------------------------------------------------------ */ |
1030 | static void lgdt3306a_monitor_vsb(struct lgdt3306a_state *state) | 1034 | static int lgdt3306a_monitor_vsb(struct lgdt3306a_state *state) |
1031 | { | 1035 | { |
1032 | u8 val; | 1036 | u8 val; |
1033 | int ret; | 1037 | int ret; |
@@ -1035,16 +1039,27 @@ static void lgdt3306a_monitor_vsb(struct lgdt3306a_state *state) | |||
1035 | u16 fbDlyCir; | 1039 | u16 fbDlyCir; |
1036 | 1040 | ||
1037 | ret = lgdt3306a_read_reg(state, 0x21a1, &val); | 1041 | ret = lgdt3306a_read_reg(state, 0x21a1, &val); |
1042 | if (ret) | ||
1043 | return ret; | ||
1038 | snrRef = val & 0x3f; | 1044 | snrRef = val & 0x3f; |
1039 | 1045 | ||
1040 | ret = lgdt3306a_read_reg(state, 0x2185, &maxPowerMan); | 1046 | ret = lgdt3306a_read_reg(state, 0x2185, &maxPowerMan); |
1047 | if (ret) | ||
1048 | return ret; | ||
1041 | 1049 | ||
1042 | ret = lgdt3306a_read_reg(state, 0x2191, &val); | 1050 | ret = lgdt3306a_read_reg(state, 0x2191, &val); |
1051 | if (ret) | ||
1052 | return ret; | ||
1043 | nCombDet = (val & 0x80) >> 7; | 1053 | nCombDet = (val & 0x80) >> 7; |
1044 | 1054 | ||
1045 | ret = lgdt3306a_read_reg(state, 0x2180, &val); | 1055 | ret = lgdt3306a_read_reg(state, 0x2180, &val); |
1056 | if (ret) | ||
1057 | return ret; | ||
1046 | fbDlyCir = (val & 0x03) << 8; | 1058 | fbDlyCir = (val & 0x03) << 8; |
1059 | |||
1047 | ret = lgdt3306a_read_reg(state, 0x2181, &val); | 1060 | ret = lgdt3306a_read_reg(state, 0x2181, &val); |
1061 | if (ret) | ||
1062 | return ret; | ||
1048 | fbDlyCir |= val; | 1063 | fbDlyCir |= val; |
1049 | 1064 | ||
1050 | lg_dbg("snrRef=%d maxPowerMan=0x%x nCombDet=%d fbDlyCir=0x%x\n", | 1065 | lg_dbg("snrRef=%d maxPowerMan=0x%x nCombDet=%d fbDlyCir=0x%x\n", |
@@ -1052,6 +1067,8 @@ static void lgdt3306a_monitor_vsb(struct lgdt3306a_state *state) | |||
1052 | 1067 | ||
1053 | /* Carrier offset sub loop bandwidth */ | 1068 | /* Carrier offset sub loop bandwidth */ |
1054 | ret = lgdt3306a_read_reg(state, 0x1061, &val); | 1069 | ret = lgdt3306a_read_reg(state, 0x1061, &val); |
1070 | if (ret) | ||
1071 | return ret; | ||
1055 | val &= 0xf8; | 1072 | val &= 0xf8; |
1056 | if ((snrRef > 18) && (maxPowerMan > 0x68) && (nCombDet == 0x01) && ((fbDlyCir == 0x03FF) || (fbDlyCir < 0x6C))) { | 1073 | if ((snrRef > 18) && (maxPowerMan > 0x68) && (nCombDet == 0x01) && ((fbDlyCir == 0x03FF) || (fbDlyCir < 0x6C))) { |
1057 | /* SNR is over 18dB and no ghosting */ | 1074 | /* SNR is over 18dB and no ghosting */ |
@@ -1060,20 +1077,30 @@ static void lgdt3306a_monitor_vsb(struct lgdt3306a_state *state) | |||
1060 | val |= 0x04; /* final bandwidth = 4 */ | 1077 | val |= 0x04; /* final bandwidth = 4 */ |
1061 | } | 1078 | } |
1062 | ret = lgdt3306a_write_reg(state, 0x1061, val); | 1079 | ret = lgdt3306a_write_reg(state, 0x1061, val); |
1080 | if (ret) | ||
1081 | return ret; | ||
1063 | 1082 | ||
1064 | /* Adjust Notch Filter */ | 1083 | /* Adjust Notch Filter */ |
1065 | ret = lgdt3306a_read_reg(state, 0x0024, &val); | 1084 | ret = lgdt3306a_read_reg(state, 0x0024, &val); |
1085 | if (ret) | ||
1086 | return ret; | ||
1066 | val &= 0x0f; | 1087 | val &= 0x0f; |
1067 | if (nCombDet == 0) { /* Turn on the Notch Filter */ | 1088 | if (nCombDet == 0) { /* Turn on the Notch Filter */ |
1068 | val |= 0x50; | 1089 | val |= 0x50; |
1069 | } | 1090 | } |
1070 | ret = lgdt3306a_write_reg(state, 0x0024, val); | 1091 | ret = lgdt3306a_write_reg(state, 0x0024, val); |
1092 | if (ret) | ||
1093 | return ret; | ||
1071 | 1094 | ||
1072 | /* VSB Timing Recovery output normalization */ | 1095 | /* VSB Timing Recovery output normalization */ |
1073 | ret = lgdt3306a_read_reg(state, 0x103d, &val); | 1096 | ret = lgdt3306a_read_reg(state, 0x103d, &val); |
1097 | if (ret) | ||
1098 | return ret; | ||
1074 | val &= 0xcf; | 1099 | val &= 0xcf; |
1075 | val |= 0x20; | 1100 | val |= 0x20; |
1076 | ret = lgdt3306a_write_reg(state, 0x103d, val); | 1101 | ret = lgdt3306a_write_reg(state, 0x103d, val); |
1102 | |||
1103 | return ret; | ||
1077 | } | 1104 | } |
1078 | 1105 | ||
1079 | static enum lgdt3306a_modulation lgdt3306a_check_oper_mode(struct lgdt3306a_state *state) | 1106 | static enum lgdt3306a_modulation lgdt3306a_check_oper_mode(struct lgdt3306a_state *state) |
@@ -1082,6 +1109,8 @@ static enum lgdt3306a_modulation lgdt3306a_check_oper_mode(struct lgdt3306a_stat | |||
1082 | int ret; | 1109 | int ret; |
1083 | 1110 | ||
1084 | ret = lgdt3306a_read_reg(state, 0x0081, &val); | 1111 | ret = lgdt3306a_read_reg(state, 0x0081, &val); |
1112 | if (ret) | ||
1113 | goto err; | ||
1085 | 1114 | ||
1086 | if (val & 0x80) { | 1115 | if (val & 0x80) { |
1087 | lg_dbg("VSB\n"); | 1116 | lg_dbg("VSB\n"); |
@@ -1089,6 +1118,8 @@ static enum lgdt3306a_modulation lgdt3306a_check_oper_mode(struct lgdt3306a_stat | |||
1089 | } | 1118 | } |
1090 | if (val & 0x08) { | 1119 | if (val & 0x08) { |
1091 | ret = lgdt3306a_read_reg(state, 0x00a6, &val); | 1120 | ret = lgdt3306a_read_reg(state, 0x00a6, &val); |
1121 | if (ret) | ||
1122 | goto err; | ||
1092 | val = val >> 2; | 1123 | val = val >> 2; |
1093 | if (val & 0x01) { | 1124 | if (val & 0x01) { |
1094 | lg_dbg("QAM256\n"); | 1125 | lg_dbg("QAM256\n"); |
@@ -1098,6 +1129,7 @@ static enum lgdt3306a_modulation lgdt3306a_check_oper_mode(struct lgdt3306a_stat | |||
1098 | return LG3306_QAM64; | 1129 | return LG3306_QAM64; |
1099 | } | 1130 | } |
1100 | } | 1131 | } |
1132 | err: | ||
1101 | lg_warn("UNKNOWN\n"); | 1133 | lg_warn("UNKNOWN\n"); |
1102 | return LG3306_UNKNOWN_MODE; | 1134 | return LG3306_UNKNOWN_MODE; |
1103 | } | 1135 | } |
@@ -1116,6 +1148,8 @@ static enum lgdt3306a_lock_status lgdt3306a_check_lock_status(struct lgdt3306a_s | |||
1116 | case LG3306_SYNC_LOCK: | 1148 | case LG3306_SYNC_LOCK: |
1117 | { | 1149 | { |
1118 | ret = lgdt3306a_read_reg(state, 0x00a6, &val); | 1150 | ret = lgdt3306a_read_reg(state, 0x00a6, &val); |
1151 | if (ret) | ||
1152 | return ret; | ||
1119 | 1153 | ||
1120 | if ((val & 0x80) == 0x80) | 1154 | if ((val & 0x80) == 0x80) |
1121 | lockStatus = LG3306_LOCK; | 1155 | lockStatus = LG3306_LOCK; |
@@ -1128,6 +1162,8 @@ static enum lgdt3306a_lock_status lgdt3306a_check_lock_status(struct lgdt3306a_s | |||
1128 | case LG3306_AGC_LOCK: | 1162 | case LG3306_AGC_LOCK: |
1129 | { | 1163 | { |
1130 | ret = lgdt3306a_read_reg(state, 0x0080, &val); | 1164 | ret = lgdt3306a_read_reg(state, 0x0080, &val); |
1165 | if (ret) | ||
1166 | return ret; | ||
1131 | 1167 | ||
1132 | if ((val & 0x40) == 0x40) | 1168 | if ((val & 0x40) == 0x40) |
1133 | lockStatus = LG3306_LOCK; | 1169 | lockStatus = LG3306_LOCK; |
@@ -1142,6 +1178,8 @@ static enum lgdt3306a_lock_status lgdt3306a_check_lock_status(struct lgdt3306a_s | |||
1142 | modeOper = lgdt3306a_check_oper_mode(state); | 1178 | modeOper = lgdt3306a_check_oper_mode(state); |
1143 | if ((modeOper == LG3306_QAM64) || (modeOper == LG3306_QAM256)) { | 1179 | if ((modeOper == LG3306_QAM64) || (modeOper == LG3306_QAM256)) { |
1144 | ret = lgdt3306a_read_reg(state, 0x1094, &val); | 1180 | ret = lgdt3306a_read_reg(state, 0x1094, &val); |
1181 | if (ret) | ||
1182 | return ret; | ||
1145 | 1183 | ||
1146 | if ((val & 0x80) == 0x80) | 1184 | if ((val & 0x80) == 0x80) |
1147 | lockStatus = LG3306_LOCK; | 1185 | lockStatus = LG3306_LOCK; |
@@ -1158,6 +1196,8 @@ static enum lgdt3306a_lock_status lgdt3306a_check_lock_status(struct lgdt3306a_s | |||
1158 | modeOper = lgdt3306a_check_oper_mode(state); | 1196 | modeOper = lgdt3306a_check_oper_mode(state); |
1159 | if ((modeOper == LG3306_QAM64) || (modeOper == LG3306_QAM256)) { | 1197 | if ((modeOper == LG3306_QAM64) || (modeOper == LG3306_QAM256)) { |
1160 | ret = lgdt3306a_read_reg(state, 0x0080, &val); | 1198 | ret = lgdt3306a_read_reg(state, 0x0080, &val); |
1199 | if (ret) | ||
1200 | return ret; | ||
1161 | 1201 | ||
1162 | if ((val & 0x10) == 0x10) | 1202 | if ((val & 0x10) == 0x10) |
1163 | lockStatus = LG3306_LOCK; | 1203 | lockStatus = LG3306_LOCK; |
@@ -1186,6 +1226,8 @@ static enum lgdt3306a_neverlock_status lgdt3306a_check_neverlock_status(struct l | |||
1186 | enum lgdt3306a_neverlock_status lockStatus; | 1226 | enum lgdt3306a_neverlock_status lockStatus; |
1187 | 1227 | ||
1188 | ret = lgdt3306a_read_reg(state, 0x0080, &val); | 1228 | ret = lgdt3306a_read_reg(state, 0x0080, &val); |
1229 | if (ret) | ||
1230 | return ret; | ||
1189 | lockStatus = (enum lgdt3306a_neverlock_status)(val & 0x03); | 1231 | lockStatus = (enum lgdt3306a_neverlock_status)(val & 0x03); |
1190 | 1232 | ||
1191 | lg_dbg("NeverLock=%d", lockStatus); | 1233 | lg_dbg("NeverLock=%d", lockStatus); |
@@ -1193,7 +1235,7 @@ static enum lgdt3306a_neverlock_status lgdt3306a_check_neverlock_status(struct l | |||
1193 | return lockStatus; | 1235 | return lockStatus; |
1194 | } | 1236 | } |
1195 | 1237 | ||
1196 | static void lgdt3306a_pre_monitoring(struct lgdt3306a_state *state) | 1238 | static int lgdt3306a_pre_monitoring(struct lgdt3306a_state *state) |
1197 | { | 1239 | { |
1198 | u8 val = 0; | 1240 | u8 val = 0; |
1199 | int ret; | 1241 | int ret; |
@@ -1201,16 +1243,24 @@ static void lgdt3306a_pre_monitoring(struct lgdt3306a_state *state) | |||
1201 | 1243 | ||
1202 | /* Channel variation */ | 1244 | /* Channel variation */ |
1203 | ret = lgdt3306a_read_reg(state, 0x21bc, &currChDiffACQ); | 1245 | ret = lgdt3306a_read_reg(state, 0x21bc, &currChDiffACQ); |
1246 | if (ret) | ||
1247 | return ret; | ||
1204 | 1248 | ||
1205 | /* SNR of Frame sync */ | 1249 | /* SNR of Frame sync */ |
1206 | ret = lgdt3306a_read_reg(state, 0x21a1, &val); | 1250 | ret = lgdt3306a_read_reg(state, 0x21a1, &val); |
1251 | if (ret) | ||
1252 | return ret; | ||
1207 | snrRef = val & 0x3f; | 1253 | snrRef = val & 0x3f; |
1208 | 1254 | ||
1209 | /* Strong Main CIR */ | 1255 | /* Strong Main CIR */ |
1210 | ret = lgdt3306a_read_reg(state, 0x2199, &val); | 1256 | ret = lgdt3306a_read_reg(state, 0x2199, &val); |
1257 | if (ret) | ||
1258 | return ret; | ||
1211 | mainStrong = (val & 0x40) >> 6; | 1259 | mainStrong = (val & 0x40) >> 6; |
1212 | 1260 | ||
1213 | ret = lgdt3306a_read_reg(state, 0x0090, &val); | 1261 | ret = lgdt3306a_read_reg(state, 0x0090, &val); |
1262 | if (ret) | ||
1263 | return ret; | ||
1214 | aiccrejStatus = (val & 0xf0) >> 4; | 1264 | aiccrejStatus = (val & 0xf0) >> 4; |
1215 | 1265 | ||
1216 | lg_dbg("snrRef=%d mainStrong=%d aiccrejStatus=%d currChDiffACQ=0x%x\n", | 1266 | lg_dbg("snrRef=%d mainStrong=%d aiccrejStatus=%d currChDiffACQ=0x%x\n", |
@@ -1221,30 +1271,50 @@ static void lgdt3306a_pre_monitoring(struct lgdt3306a_state *state) | |||
1221 | #endif | 1271 | #endif |
1222 | if (mainStrong == 0) { | 1272 | if (mainStrong == 0) { |
1223 | ret = lgdt3306a_read_reg(state, 0x2135, &val); | 1273 | ret = lgdt3306a_read_reg(state, 0x2135, &val); |
1274 | if (ret) | ||
1275 | return ret; | ||
1224 | val &= 0x0f; | 1276 | val &= 0x0f; |
1225 | val |= 0xa0; | 1277 | val |= 0xa0; |
1226 | ret = lgdt3306a_write_reg(state, 0x2135, val); | 1278 | ret = lgdt3306a_write_reg(state, 0x2135, val); |
1279 | if (ret) | ||
1280 | return ret; | ||
1227 | 1281 | ||
1228 | ret = lgdt3306a_read_reg(state, 0x2141, &val); | 1282 | ret = lgdt3306a_read_reg(state, 0x2141, &val); |
1283 | if (ret) | ||
1284 | return ret; | ||
1229 | val &= 0x3f; | 1285 | val &= 0x3f; |
1230 | val |= 0x80; | 1286 | val |= 0x80; |
1231 | ret = lgdt3306a_write_reg(state, 0x2141, val); | 1287 | ret = lgdt3306a_write_reg(state, 0x2141, val); |
1288 | if (ret) | ||
1289 | return ret; | ||
1232 | 1290 | ||
1233 | ret = lgdt3306a_write_reg(state, 0x2122, 0x70); | 1291 | ret = lgdt3306a_write_reg(state, 0x2122, 0x70); |
1292 | if (ret) | ||
1293 | return ret; | ||
1234 | } else { /* Weak ghost or static channel */ | 1294 | } else { /* Weak ghost or static channel */ |
1235 | ret = lgdt3306a_read_reg(state, 0x2135, &val); | 1295 | ret = lgdt3306a_read_reg(state, 0x2135, &val); |
1296 | if (ret) | ||
1297 | return ret; | ||
1236 | val &= 0x0f; | 1298 | val &= 0x0f; |
1237 | val |= 0x70; | 1299 | val |= 0x70; |
1238 | ret = lgdt3306a_write_reg(state, 0x2135, val); | 1300 | ret = lgdt3306a_write_reg(state, 0x2135, val); |
1301 | if (ret) | ||
1302 | return ret; | ||
1239 | 1303 | ||
1240 | ret = lgdt3306a_read_reg(state, 0x2141, &val); | 1304 | ret = lgdt3306a_read_reg(state, 0x2141, &val); |
1305 | if (ret) | ||
1306 | return ret; | ||
1241 | val &= 0x3f; | 1307 | val &= 0x3f; |
1242 | val |= 0x40; | 1308 | val |= 0x40; |
1243 | ret = lgdt3306a_write_reg(state, 0x2141, val); | 1309 | ret = lgdt3306a_write_reg(state, 0x2141, val); |
1310 | if (ret) | ||
1311 | return ret; | ||
1244 | 1312 | ||
1245 | ret = lgdt3306a_write_reg(state, 0x2122, 0x40); | 1313 | ret = lgdt3306a_write_reg(state, 0x2122, 0x40); |
1314 | if (ret) | ||
1315 | return ret; | ||
1246 | } | 1316 | } |
1247 | 1317 | return 0; | |
1248 | } | 1318 | } |
1249 | 1319 | ||
1250 | static enum lgdt3306a_lock_status lgdt3306a_sync_lock_poll(struct lgdt3306a_state *state) | 1320 | static enum lgdt3306a_lock_status lgdt3306a_sync_lock_poll(struct lgdt3306a_state *state) |
@@ -1310,6 +1380,8 @@ static u8 lgdt3306a_get_packet_error(struct lgdt3306a_state *state) | |||
1310 | int ret; | 1380 | int ret; |
1311 | 1381 | ||
1312 | ret = lgdt3306a_read_reg(state, 0x00fa, &val); | 1382 | ret = lgdt3306a_read_reg(state, 0x00fa, &val); |
1383 | if (ret) | ||
1384 | return ret; | ||
1313 | 1385 | ||
1314 | return val; | 1386 | return val; |
1315 | } | 1387 | } |
@@ -1393,7 +1465,9 @@ static enum lgdt3306a_lock_status lgdt3306a_vsb_lock_poll(struct lgdt3306a_state | |||
1393 | return LG3306_UNLOCK; | 1465 | return LG3306_UNLOCK; |
1394 | } else { | 1466 | } else { |
1395 | msleep(20); | 1467 | msleep(20); |
1396 | lgdt3306a_pre_monitoring(state); | 1468 | ret = lgdt3306a_pre_monitoring(state); |
1469 | if (ret) | ||
1470 | return LG3306_UNLOCK; | ||
1397 | 1471 | ||
1398 | packet_error = lgdt3306a_get_packet_error(state); | 1472 | packet_error = lgdt3306a_get_packet_error(state); |
1399 | snr = lgdt3306a_calculate_snr_x100(state); | 1473 | snr = lgdt3306a_calculate_snr_x100(state); |
@@ -1483,7 +1557,7 @@ static int lgdt3306a_read_status(struct dvb_frontend *fe, fe_status_t *status) | |||
1483 | 1557 | ||
1484 | *status |= FE_HAS_LOCK; | 1558 | *status |= FE_HAS_LOCK; |
1485 | 1559 | ||
1486 | lgdt3306a_monitor_vsb(state); | 1560 | ret = lgdt3306a_monitor_vsb(state); |
1487 | } | 1561 | } |
1488 | break; | 1562 | break; |
1489 | default: | 1563 | default: |