| @@ -805,6 +805,15 @@ const char *v4l2_ctrl_get_name(u32 id) · 804 unmodified lines |
| 805 | 805 | case V4L2_CID_RDS_TX_PTY: return "RDS Program Type"; |
| 806 | 806 | case V4L2_CID_RDS_TX_PS_NAME: return "RDS PS Name"; |
| 807 | 807 | case V4L2_CID_RDS_TX_RADIO_TEXT: return "RDS Radio Text"; |
| 808 | + case V4L2_CID_RDS_TX_MONO_STEREO: return "RDS Stereo"; |
| 809 | + case V4L2_CID_RDS_TX_ARTIFICIAL_HEAD: return "RDS Artificial Head"; |
| 810 | + case V4L2_CID_RDS_TX_COMPRESSED: return "RDS Compressed"; |
| 811 | + case V4L2_CID_RDS_TX_DYNAMIC_PTY: return "RDS Dynamic PTY"; |
| 812 | + case V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT: return "RDS Traffic Announcement"; |
| 813 | + case V4L2_CID_RDS_TX_TRAFFIC_PROGRAM: return "RDS Traffic Program"; |
| 814 | + case V4L2_CID_RDS_TX_MUSIC_SPEECH: return "RDS Music"; |
| 815 | + case V4L2_CID_RDS_TX_ALT_FREQS_ENABLE: return "RDS Enable Alt Frequencies"; |
| 816 | + case V4L2_CID_RDS_TX_ALT_FREQS: return "RDS Alternate Frequencies"; |
| 808 | 817 | case V4L2_CID_AUDIO_LIMITER_ENABLED: return "Audio Limiter Feature Enabled"; |
| 809 | 818 | case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time"; |
| 810 | 819 | case V4L2_CID_AUDIO_LIMITER_DEVIATION: return "Audio Limiter Deviation"; |
| @@ -946,6 +955,14 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, · 135 unmodified lines |
| 946 | 955 | case V4L2_CID_RF_TUNER_IF_GAIN_AUTO: |
| 947 | 956 | case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO: |
| 948 | 957 | case V4L2_CID_RF_TUNER_PLL_LOCK: |
| 958 | + case V4L2_CID_RDS_TX_MONO_STEREO: |
| 959 | + case V4L2_CID_RDS_TX_ARTIFICIAL_HEAD: |
| 960 | + case V4L2_CID_RDS_TX_COMPRESSED: |
| 961 | + case V4L2_CID_RDS_TX_DYNAMIC_PTY: |
| 962 | + case V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT: |
| 963 | + case V4L2_CID_RDS_TX_TRAFFIC_PROGRAM: |
| 964 | + case V4L2_CID_RDS_TX_MUSIC_SPEECH: |
| 965 | + case V4L2_CID_RDS_TX_ALT_FREQS_ENABLE: |
| 949 | 966 | *type = V4L2_CTRL_TYPE_BOOLEAN; |
| 950 | 967 | *min = 0; |
| 951 | 968 | *max = *step = 1; |
| @@ -1089,6 +1106,9 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, · 137 unmodified lines |
| 1089 | 1106 | case V4L2_CID_DETECT_MD_THRESHOLD_GRID: |
| 1090 | 1107 | *type = V4L2_CTRL_TYPE_U16; |
| 1091 | 1108 | break; |
| 1109 | + case V4L2_CID_RDS_TX_ALT_FREQS: |
| 1110 | + *type = V4L2_CTRL_TYPE_U32; |
| 1111 | + break; |
| 1092 | 1112 | default: |
| 1093 | 1113 | *type = V4L2_CTRL_TYPE_INTEGER; |
| 1094 | 1114 | break; |
| @@ -1209,6 +1229,8 @@ static bool std_equal(const struct v4l2_ctrl *ctrl, u32 idx, · 114 unmodified lines |
| 1209 | 1229 | return ptr1.p_u8[idx] == ptr2.p_u8[idx]; |
| 1210 | 1230 | case V4L2_CTRL_TYPE_U16: |
| 1211 | 1231 | return ptr1.p_u16[idx] == ptr2.p_u16[idx]; |
| 1232 | + case V4L2_CTRL_TYPE_U32: |
| 1233 | + return ptr1.p_u32[idx] == ptr2.p_u32[idx]; |
| 1212 | 1234 | default: |
| 1213 | 1235 | if (ctrl->is_int) |
| 1214 | 1236 | return ptr1.p_s32[idx] == ptr2.p_s32[idx]; |
| @@ -1242,6 +1264,9 @@ static void std_init(const struct v4l2_ctrl *ctrl, u32 idx, · 27 unmodified lines |
| 1242 | 1264 | case V4L2_CTRL_TYPE_U16: |
| 1243 | 1265 | ptr.p_u16[idx] = ctrl->default_value; |
| 1244 | 1266 | break; |
| 1267 | + case V4L2_CTRL_TYPE_U32: |
| 1268 | + ptr.p_u32[idx] = ctrl->default_value; |
| 1269 | + break; |
| 1245 | 1270 | default: |
| 1246 | 1271 | idx *= ctrl->elem_size; |
| 1247 | 1272 | memset(ptr.p + idx, 0, ctrl->elem_size); |
| @@ -1289,6 +1314,9 @@ static void std_log(const struct v4l2_ctrl *ctrl) · 41 unmodified lines |
| 1289 | 1314 | case V4L2_CTRL_TYPE_U16: |
| 1290 | 1315 | pr_cont("%u", (unsigned)*ptr.p_u16); |
| 1291 | 1316 | break; |
| 1317 | + case V4L2_CTRL_TYPE_U32: |
| 1318 | + pr_cont("%u", (unsigned)*ptr.p_u32); |
| 1319 | + break; |
| 1292 | 1320 | default: |
| 1293 | 1321 | pr_cont("unknown type %d", ctrl->type); |
| 1294 | 1322 | break; |
| @@ -1346,6 +1374,8 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx, · 51 unmodified lines |
| 1346 | 1374 | return ROUND_TO_RANGE(ptr.p_u8[idx], u8, ctrl); |
| 1347 | 1375 | case V4L2_CTRL_TYPE_U16: |
| 1348 | 1376 | return ROUND_TO_RANGE(ptr.p_u16[idx], u16, ctrl); |
| 1377 | + case V4L2_CTRL_TYPE_U32: |
| 1378 | + return ROUND_TO_RANGE(ptr.p_u32[idx], u32, ctrl); |
| 1349 | 1379 | |
| 1350 | 1380 | case V4L2_CTRL_TYPE_BOOLEAN: |
| 1351 | 1381 | ptr.p_s32[idx] = !!ptr.p_s32[idx]; |
| @@ -1578,6 +1608,7 @@ static int check_range(enum v4l2_ctrl_type type, · 226 unmodified lines |
| 1578 | 1608 | /* fall through */ |
| 1579 | 1609 | case V4L2_CTRL_TYPE_U8: |
| 1580 | 1610 | case V4L2_CTRL_TYPE_U16: |
| 1611 | + case V4L2_CTRL_TYPE_U32: |
| 1581 | 1612 | case V4L2_CTRL_TYPE_INTEGER: |
| 1582 | 1613 | case V4L2_CTRL_TYPE_INTEGER64: |
| 1583 | 1614 | if (step == 0 || min > max || def < min || def > max) |
| @@ -1893,6 +1924,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, · 309 unmodified lines |
| 1893 | 1924 | case V4L2_CTRL_TYPE_U16: |
| 1894 | 1925 | elem_size = sizeof(u16); |
| 1895 | 1926 | break; |
| 1927 | + case V4L2_CTRL_TYPE_U32: |
| 1928 | + elem_size = sizeof(u32); |
| 1929 | + break; |
| 1896 | 1930 | default: |
| 1897 | 1931 | if (type < V4L2_CTRL_COMPOUND_TYPES) |
| 1898 | 1932 | elem_size = sizeof(s32); |
| @@ -3248,6 +3282,7 @@ int __v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl, · 1349 unmodified lines |
| 3248 | 3282 | case V4L2_CTRL_TYPE_BITMASK: |
| 3249 | 3283 | case V4L2_CTRL_TYPE_U8: |
| 3250 | 3284 | case V4L2_CTRL_TYPE_U16: |
| 3285 | + case V4L2_CTRL_TYPE_U32: |
| 3251 | 3286 | if (ctrl->is_array) |
| 3252 | 3287 | return -EINVAL; |
| 3253 | 3288 | ret = check_range(ctrl->type, min, max, step, def); |