Lines Matching +full:msb +full:- +full:-
1 // SPDX-License-Identifier: GPL-2.0-only
3 * vivid-rds-gen.c - rds (radio data system) generator support functions.
13 #include "vivid-rds-gen.h"
19 return (rds->dyn_pty << 2) | (grp & 3); in vivid_get_di()
21 return (rds->compressed << 2) | (grp & 3); in vivid_get_di()
23 return (rds->art_head << 2) | (grp & 3); in vivid_get_di()
25 return (rds->mono_stereo << 2) | (grp & 3); in vivid_get_di()
32 * Groups 0-3, 22-25 and 44-47 (spaced 22 groups apart) are filled with a
35 * Groups 4-19 and 26-41 use group 2A for the radio text.
44 struct v4l2_rds_data *data = rds->data; in vivid_rds_generate()
53 data[0].lsb = rds->picode & 0xff; in vivid_rds_generate()
54 data[0].msb = rds->picode >> 8; in vivid_rds_generate()
56 data[1].lsb = rds->pty << 5; in vivid_rds_generate()
57 data[1].msb = (rds->pty >> 3) | (rds->tp << 2); in vivid_rds_generate()
66 data[1].lsb |= (rds->ta << 4) | (rds->ms << 3); in vivid_rds_generate()
68 data[1].msb |= 1 << 3; in vivid_rds_generate()
69 data[2].lsb = rds->picode & 0xff; in vivid_rds_generate()
70 data[2].msb = rds->picode >> 8; in vivid_rds_generate()
72 data[3].lsb = rds->psname[2 * idx + 1]; in vivid_rds_generate()
73 data[3].msb = rds->psname[2 * idx]; in vivid_rds_generate()
77 idx = ((grp - 4) % 22) % 16; in vivid_rds_generate()
79 data[1].msb |= 4 << 3; in vivid_rds_generate()
80 data[2].msb = rds->radiotext[4 * idx]; in vivid_rds_generate()
81 data[2].lsb = rds->radiotext[4 * idx + 1]; in vivid_rds_generate()
83 data[3].msb = rds->radiotext[4 * idx + 2]; in vivid_rds_generate()
84 data[3].lsb = rds->radiotext[4 * idx + 3]; in vivid_rds_generate()
96 date = 14956 + tm.tm_mday + ((tm.tm_year - l) * 1461) / 4 + in vivid_rds_generate()
104 data[1].msb |= 8 << 3; in vivid_rds_generate()
107 data[2].msb = (date >> 7) & 0xff; in vivid_rds_generate()
110 data[3].msb = (time >> 8) & 0xff; in vivid_rds_generate()
113 data[1].lsb |= (rds->ta << 4) | (rds->ms << 3); in vivid_rds_generate()
115 data[1].msb |= 0x1f << 3; in vivid_rds_generate()
116 data[2].lsb = rds->picode & 0xff; in vivid_rds_generate()
117 data[2].msb = rds->picode >> 8; in vivid_rds_generate()
119 data[3].lsb = rds->pty << 5; in vivid_rds_generate()
120 data[3].lsb |= (rds->ta << 4) | (rds->ms << 3); in vivid_rds_generate()
122 data[3].msb |= rds->pty >> 3; in vivid_rds_generate()
123 data[3].msb |= 0x1f << 3; in vivid_rds_generate()
133 if (rds->use_rbds) { in vivid_rds_gen_fill()
134 rds->picode = 0x2e75; /* 'KLNX' call sign */ in vivid_rds_gen_fill()
135 rds->pty = alt ? 29 : 2; in vivid_rds_gen_fill()
137 rds->picode = 0x8088; in vivid_rds_gen_fill()
138 rds->pty = alt ? 16 : 3; in vivid_rds_gen_fill()
140 rds->mono_stereo = true; in vivid_rds_gen_fill()
141 rds->art_head = false; in vivid_rds_gen_fill()
142 rds->compressed = false; in vivid_rds_gen_fill()
143 rds->dyn_pty = false; in vivid_rds_gen_fill()
144 rds->tp = true; in vivid_rds_gen_fill()
145 rds->ta = alt; in vivid_rds_gen_fill()
146 rds->ms = true; in vivid_rds_gen_fill()
147 snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d", in vivid_rds_gen_fill()
150 strscpy(rds->radiotext, in vivid_rds_gen_fill()
152 sizeof(rds->radiotext)); in vivid_rds_gen_fill()
154 strscpy(rds->radiotext, in vivid_rds_gen_fill()
156 sizeof(rds->radiotext)); in vivid_rds_gen_fill()