Skip to content

Commit f64b49e

Browse files
pcercueiQuzarDC
authored andcommitted
maple: Initialize send_buf in maple_frame_init()
Instead of setting the frame's send_buf in every single driver to point to the exact same thing, initialize it inside maple_frame_init() to factorize code. Signed-off-by: Paul Cercueil <paul@crapouillou.net>
1 parent 31affd7 commit f64b49e

File tree

9 files changed

+49
-122
lines changed

9 files changed

+49
-122
lines changed

kernel/arch/dreamcast/hardware/maple/controller.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,20 +204,16 @@ static void cont_reply(maple_state_t *st, maple_frame_t *frm) {
204204
}
205205

206206
static int cont_poll(maple_device_t *dev) {
207-
uint32_t *send_buf;
208-
209207
if(maple_frame_lock(&dev->frame) < 0)
210208
return 0;
211209

212210
maple_frame_init(&dev->frame);
213-
send_buf = (uint32_t *)dev->frame.recv_buf;
214-
send_buf[0] = MAPLE_FUNC_CONTROLLER;
211+
dev->frame.send_buf[0] = MAPLE_FUNC_CONTROLLER;
215212
dev->frame.cmd = MAPLE_COMMAND_GETCOND;
216213
dev->frame.dst_port = dev->port;
217214
dev->frame.dst_unit = dev->unit;
218215
dev->frame.length = 1;
219216
dev->frame.callback = cont_reply;
220-
dev->frame.send_buf = send_buf;
221217
maple_queue_frame(&dev->frame);
222218

223219
return 0;

kernel/arch/dreamcast/hardware/maple/dreameye.c

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,6 @@ static void dreameye_get_transfer_count_cb(maple_state_t *st, maple_frame_t *fra
102102

103103
int dreameye_get_image_count(maple_device_t *dev, int block) {
104104
dreameye_state_t *de;
105-
uint32 *send_buf;
106-
107105
assert(dev != NULL);
108106

109107
de = (dreameye_state_t *)dev->status;
@@ -115,15 +113,13 @@ int dreameye_get_image_count(maple_device_t *dev, int block) {
115113

116114
/* Reset the frame */
117115
maple_frame_init(&dev->frame);
118-
send_buf = (uint32 *)dev->frame.recv_buf;
119-
send_buf[0] = MAPLE_FUNC_CAMERA;
120-
send_buf[1] = DREAMEYE_GETCOND_NUM_IMAGES | (0x04 << 8);
116+
dev->frame.send_buf[0] = MAPLE_FUNC_CAMERA;
117+
dev->frame.send_buf[1] = DREAMEYE_GETCOND_NUM_IMAGES | (0x04 << 8);
121118
dev->frame.cmd = MAPLE_COMMAND_GETCOND;
122119
dev->frame.dst_port = dev->port;
123120
dev->frame.dst_unit = dev->unit;
124121
dev->frame.length = 2;
125122
dev->frame.callback = dreameye_get_image_count_cb;
126-
dev->frame.send_buf = send_buf;
127123
maple_queue_frame(&dev->frame);
128124

129125
if(block) {
@@ -197,32 +193,26 @@ static void dreameye_get_image_cb(maple_state_t *st, maple_frame_t *frame) {
197193
static int dreameye_send_get_image(maple_device_t *dev,
198194
dreameye_state_t *state, uint8 req,
199195
uint8 cnt) {
200-
uint32 *send_buf;
201-
202196
/* Lock the frame */
203197
if(maple_frame_lock(&dev->frame) < 0)
204198
return MAPLE_EAGAIN;
205199

206200
/* Reset the frame */
207201
maple_frame_init(&dev->frame);
208-
send_buf = (uint32 *)dev->frame.recv_buf;
209-
send_buf[0] = MAPLE_FUNC_CAMERA;
210-
send_buf[1] = DREAMEYE_SUBCOMMAND_IMAGEREQ | (state->img_number << 8) |
211-
(req << 16) | (cnt << 24);
202+
dev->frame.send_buf[0] = MAPLE_FUNC_CAMERA;
203+
dev->frame.send_buf[1] = DREAMEYE_SUBCOMMAND_IMAGEREQ | (state->img_number << 8) |
204+
(req << 16) | (cnt << 24);
212205
dev->frame.cmd = MAPLE_COMMAND_CAMCONTROL;
213206
dev->frame.dst_port = dev->port;
214207
dev->frame.dst_unit = dev->unit;
215208
dev->frame.length = 2;
216209
dev->frame.callback = dreameye_get_image_cb;
217-
dev->frame.send_buf = send_buf;
218210
maple_queue_frame(&dev->frame);
219211

220212
return MAPLE_EOK;
221213
}
222214

223215
static int dreameye_get_transfer_count(maple_device_t *dev, uint8 img) {
224-
uint32 *send_buf;
225-
226216
assert(dev != NULL);
227217

228218
/* Lock the frame */
@@ -231,15 +221,13 @@ static int dreameye_get_transfer_count(maple_device_t *dev, uint8 img) {
231221

232222
/* Reset the frame */
233223
maple_frame_init(&dev->frame);
234-
send_buf = (uint32 *)dev->frame.recv_buf;
235-
send_buf[0] = MAPLE_FUNC_CAMERA;
236-
send_buf[1] = DREAMEYE_GETCOND_TRANSFER_COUNT | (img << 8);
224+
dev->frame.send_buf[0] = MAPLE_FUNC_CAMERA;
225+
dev->frame.send_buf[1] = DREAMEYE_GETCOND_TRANSFER_COUNT | (img << 8);
237226
dev->frame.cmd = MAPLE_COMMAND_GETCOND;
238227
dev->frame.dst_port = dev->port;
239228
dev->frame.dst_unit = dev->unit;
240229
dev->frame.length = 2;
241230
dev->frame.callback = dreameye_get_transfer_count_cb;
242-
dev->frame.send_buf = send_buf;
243231
maple_queue_frame(&dev->frame);
244232

245233
/* Wait for the Dreameye to accept it */
@@ -359,8 +347,6 @@ static void dreameye_erase_cb(maple_state_t *st, maple_frame_t *frame) {
359347
}
360348

361349
int dreameye_erase_image(maple_device_t *dev, uint8 image, int block) {
362-
uint32 *send_buf;
363-
364350
assert(dev != NULL);
365351

366352
if(image < 0x02 || (image > 0x21 && image != 0xFF))
@@ -372,15 +358,13 @@ int dreameye_erase_image(maple_device_t *dev, uint8 image, int block) {
372358

373359
/* Reset the frame */
374360
maple_frame_init(&dev->frame);
375-
send_buf = (uint32 *)dev->frame.recv_buf;
376-
send_buf[0] = MAPLE_FUNC_CAMERA;
377-
send_buf[1] = DREAMEYE_SUBCOMMAND_ERASE | (0x80 << 8) | (image << 16);
361+
dev->frame.send_buf[0] = MAPLE_FUNC_CAMERA;
362+
dev->frame.send_buf[1] = DREAMEYE_SUBCOMMAND_ERASE | (0x80 << 8) | (image << 16);
378363
dev->frame.cmd = MAPLE_COMMAND_CAMCONTROL;
379364
dev->frame.dst_port = dev->port;
380365
dev->frame.dst_unit = dev->unit;
381366
dev->frame.length = 2;
382367
dev->frame.callback = dreameye_erase_cb;
383-
dev->frame.send_buf = send_buf;
384368
maple_queue_frame(&dev->frame);
385369

386370
if(block) {

kernel/arch/dreamcast/hardware/maple/keyboard.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -761,20 +761,16 @@ static void kbd_reply(maple_state_t *st, maple_frame_t *frm) {
761761
}
762762

763763
static int kbd_poll_intern(maple_device_t *dev) {
764-
uint32_t *send_buf;
765-
766764
if(maple_frame_lock(&dev->frame) < 0)
767765
return 0;
768766

769767
maple_frame_init(&dev->frame);
770-
send_buf = (uint32_t *)dev->frame.recv_buf;
771-
send_buf[0] = MAPLE_FUNC_KEYBOARD;
768+
dev->frame.send_buf[0] = MAPLE_FUNC_KEYBOARD;
772769
dev->frame.cmd = MAPLE_COMMAND_GETCOND;
773770
dev->frame.dst_port = dev->port;
774771
dev->frame.dst_unit = dev->unit;
775772
dev->frame.length = 1;
776773
dev->frame.callback = kbd_reply;
777-
dev->frame.send_buf = send_buf;
778774
maple_queue_frame(&dev->frame);
779775

780776
return 0;

kernel/arch/dreamcast/hardware/maple/maple_queue.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ void maple_queue_flush(void) {
5454

5555
/* Finally, parameter words, if any */
5656
if(i->length > 0) {
57-
assert(i->send_buf != NULL);
5857
memcpy(out, i->send_buf, i->length * 4);
5958
out += i->length;
6059
}
@@ -173,7 +172,7 @@ void maple_frame_init(maple_frame_t *frame) {
173172
frame->length = 0;
174173
frame->queued = 0;
175174
frame->dev = NULL;
176-
frame->send_buf = NULL;
175+
frame->send_buf = (uint32_t *)frame->recv_buf;
177176
frame->callback = NULL;
178177
}
179178

kernel/arch/dreamcast/hardware/maple/mouse.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,16 @@ static void mouse_reply(maple_state_t *st, maple_frame_t *frm) {
4848
}
4949

5050
static int mouse_poll(maple_device_t *dev) {
51-
uint32 * send_buf;
52-
5351
if(maple_frame_lock(&dev->frame) < 0)
5452
return 0;
5553

5654
maple_frame_init(&dev->frame);
57-
send_buf = (uint32 *)dev->frame.recv_buf;
58-
send_buf[0] = MAPLE_FUNC_MOUSE;
55+
dev->frame.send_buf[0] = MAPLE_FUNC_MOUSE;
5956
dev->frame.cmd = MAPLE_COMMAND_GETCOND;
6057
dev->frame.dst_port = dev->port;
6158
dev->frame.dst_unit = dev->unit;
6259
dev->frame.length = 1;
6360
dev->frame.callback = mouse_reply;
64-
dev->frame.send_buf = send_buf;
6561
maple_queue_frame(&dev->frame);
6662

6763
return 0;

kernel/arch/dreamcast/hardware/maple/purupuru.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
them act different for just about everything you feed to them. */
1616

1717
int purupuru_rumble_raw(maple_device_t *dev, uint32_t effect) {
18-
uint32_t *send_buf;
19-
2018
assert(dev != NULL);
2119

2220
/* Lock the frame */
@@ -25,15 +23,13 @@ int purupuru_rumble_raw(maple_device_t *dev, uint32_t effect) {
2523

2624
/* Reset the frame */
2725
maple_frame_init(&dev->frame);
28-
send_buf = (uint32_t *)dev->frame.recv_buf;
29-
send_buf[0] = MAPLE_FUNC_PURUPURU;
30-
send_buf[1] = effect;
26+
dev->frame.send_buf[0] = MAPLE_FUNC_PURUPURU;
27+
dev->frame.send_buf[1] = effect;
3128
dev->frame.cmd = MAPLE_COMMAND_SETCOND;
3229
dev->frame.dst_port = dev->port;
3330
dev->frame.dst_unit = dev->unit;
3431
dev->frame.length = 2;
3532
dev->frame.callback = NULL;
36-
dev->frame.send_buf = send_buf;
3733
maple_queue_frame(&dev->frame);
3834

3935
return MAPLE_EOK;

kernel/arch/dreamcast/hardware/maple/sip.c

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ int sip_set_frequency(maple_device_t *dev, unsigned int freq) {
120120

121121
int sip_start_sampling(maple_device_t *dev, sip_sample_cb cb, int block) {
122122
sip_state_t *sip;
123-
uint32 *send_buf;
124123

125124
assert(dev != NULL);
126125

@@ -138,17 +137,15 @@ int sip_start_sampling(maple_device_t *dev, sip_sample_cb cb, int block) {
138137

139138
/* Reset the frame */
140139
maple_frame_init(&dev->frame);
141-
send_buf = (uint32 *)dev->frame.recv_buf;
142-
send_buf[0] = MAPLE_FUNC_MICROPHONE;
143-
send_buf[1] = SIP_SUBCOMMAND_BASIC_CTRL |
140+
dev->frame.send_buf[0] = MAPLE_FUNC_MICROPHONE;
141+
dev->frame.send_buf[1] = SIP_SUBCOMMAND_BASIC_CTRL |
144142
(((sip->sample_type) | (sip->frequency << 2) |
145143
SIP_START_SAMPLING) << 8);
146144
dev->frame.cmd = MAPLE_COMMAND_MICCONTROL;
147145
dev->frame.dst_port = dev->port;
148146
dev->frame.dst_unit = dev->unit;
149147
dev->frame.length = 2;
150148
dev->frame.callback = sip_start_sampling_cb;
151-
dev->frame.send_buf = send_buf;
152149
maple_queue_frame(&dev->frame);
153150

154151
if(block) {
@@ -169,8 +166,6 @@ int sip_start_sampling(maple_device_t *dev, sip_sample_cb cb, int block) {
169166

170167
int sip_stop_sampling(maple_device_t *dev, int block) {
171168
sip_state_t *sip;
172-
uint32 *send_buf;
173-
174169
assert(dev != NULL);
175170

176171
sip = (sip_state_t *)dev->status;
@@ -185,15 +180,13 @@ int sip_stop_sampling(maple_device_t *dev, int block) {
185180

186181
/* Reset the frame */
187182
maple_frame_init(&dev->frame);
188-
send_buf = (uint32 *)dev->frame.recv_buf;
189-
send_buf[0] = MAPLE_FUNC_MICROPHONE;
190-
send_buf[1] = SIP_SUBCOMMAND_BASIC_CTRL;
183+
dev->frame.send_buf[0] = MAPLE_FUNC_MICROPHONE;
184+
dev->frame.send_buf[1] = SIP_SUBCOMMAND_BASIC_CTRL;
191185
dev->frame.cmd = MAPLE_COMMAND_MICCONTROL;
192186
dev->frame.dst_port = dev->port;
193187
dev->frame.dst_unit = dev->unit;
194188
dev->frame.length = 2;
195189
dev->frame.callback = sip_stop_sampling_cb;
196-
dev->frame.send_buf = send_buf;
197190
maple_queue_frame(&dev->frame);
198191

199192
if(block) {
@@ -246,10 +239,7 @@ static void sip_reply(maple_state_t *st, maple_frame_t *frm) {
246239
}
247240

248241
static int sip_poll(maple_device_t *dev) {
249-
sip_state_t *sip;
250-
uint32 *send_buf;
251-
252-
sip = (sip_state_t *)dev->status;
242+
sip_state_t *sip = (sip_state_t *)dev->status;
253243

254244
/* Test to make sure that the particular mic is enabled */
255245
if(!sip->is_sampling || !sip->callback) {
@@ -262,16 +252,13 @@ static int sip_poll(maple_device_t *dev) {
262252
return 0;
263253

264254
maple_frame_init(&dev->frame);
265-
send_buf = (uint32 *)dev->frame.recv_buf;
266-
send_buf[0] = MAPLE_FUNC_MICROPHONE;
267-
send_buf[1] = SIP_SUBCOMMAND_GET_SAMPLES |
268-
(sip->amp_gain << 8);
255+
dev->frame.send_buf[0] = MAPLE_FUNC_MICROPHONE;
256+
dev->frame.send_buf[1] = SIP_SUBCOMMAND_GET_SAMPLES | (sip->amp_gain << 8);
269257
dev->frame.cmd = MAPLE_COMMAND_MICCONTROL;
270258
dev->frame.dst_port = dev->port;
271259
dev->frame.dst_unit = dev->unit;
272260
dev->frame.length = 2;
273261
dev->frame.callback = sip_reply;
274-
dev->frame.send_buf = send_buf;
275262
maple_queue_frame(&dev->frame);
276263

277264
return 0;

0 commit comments

Comments
 (0)