Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: si2168: Refactor command setup code

Use cmd_init() to fill a struct si2168_cmd command.

Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>

authored by

Marc Gonzalez and committed by
Mauro Carvalho Chehab
619f6fc3 c268e7ad

+48 -111
+48 -111
drivers/media/dvb-frontends/si2168.c
··· 11 11 12 12 static const struct dvb_frontend_ops si2168_ops; 13 13 14 + static void cmd_init(struct si2168_cmd *cmd, const u8 *buf, int wlen, int rlen) 15 + { 16 + memcpy(cmd->args, buf, wlen); 17 + cmd->wlen = wlen; 18 + cmd->rlen = rlen; 19 + } 20 + 14 21 /* execute firmware command */ 15 22 static int si2168_cmd_execute(struct i2c_client *client, struct si2168_cmd *cmd) 16 23 { ··· 91 84 92 85 /* set manual value */ 93 86 if (dev->ts_mode & SI2168_TS_CLK_MANUAL) { 94 - memcpy(cmd.args, "\x14\x00\x0d\x10\xe8\x03", 6); 95 - cmd.wlen = 6; 96 - cmd.rlen = 4; 87 + cmd_init(&cmd, "\x14\x00\x0d\x10\xe8\x03", 6, 4); 97 88 ret = si2168_cmd_execute(client, &cmd); 98 89 if (ret) 99 90 return ret; 100 91 } 101 92 /* set TS_MODE property */ 102 - memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); 93 + cmd_init(&cmd, "\x14\x00\x01\x10\x10\x00", 6, 4); 103 94 if (dev->ts_mode & SI2168_TS_CLK_MANUAL) 104 95 cmd.args[4] = SI2168_TS_CLK_MANUAL; 105 96 if (acquire) ··· 106 101 cmd.args[4] |= SI2168_TS_TRISTATE; 107 102 if (dev->ts_clock_gapped) 108 103 cmd.args[4] |= 0x40; 109 - cmd.wlen = 6; 110 - cmd.rlen = 4; 111 104 ret = si2168_cmd_execute(client, &cmd); 112 105 113 106 return ret; ··· 129 126 130 127 switch (c->delivery_system) { 131 128 case SYS_DVBT: 132 - memcpy(cmd.args, "\xa0\x01", 2); 133 - cmd.wlen = 2; 134 - cmd.rlen = 13; 129 + cmd_init(&cmd, "\xa0\x01", 2, 13); 135 130 break; 136 131 case SYS_DVBC_ANNEX_A: 137 - memcpy(cmd.args, "\x90\x01", 2); 138 - cmd.wlen = 2; 139 - cmd.rlen = 9; 132 + cmd_init(&cmd, "\x90\x01", 2, 9); 140 133 break; 141 134 case SYS_DVBT2: 142 - memcpy(cmd.args, "\x50\x01", 2); 143 - cmd.wlen = 2; 144 - cmd.rlen = 14; 135 + cmd_init(&cmd, "\x50\x01", 2, 14); 145 136 break; 146 137 default: 147 138 ret = -EINVAL; ··· 172 175 173 176 /* BER */ 174 177 if (*status & FE_HAS_VITERBI) { 175 - memcpy(cmd.args, "\x82\x00", 2); 176 - cmd.wlen = 2; 177 - cmd.rlen = 3; 178 + cmd_init(&cmd, "\x82\x00", 2, 3); 178 179 ret = si2168_cmd_execute(client, &cmd); 179 180 if (ret) 180 181 goto err; ··· 203 208 204 209 /* UCB */ 205 210 if (*status & FE_HAS_SYNC) { 206 - memcpy(cmd.args, "\x84\x01", 2); 207 - cmd.wlen = 2; 208 - cmd.rlen = 3; 211 + cmd_init(&cmd, "\x84\x01", 2, 3); 209 212 ret = si2168_cmd_execute(client, &cmd); 210 213 if (ret) 211 214 goto err; ··· 289 296 goto err; 290 297 } 291 298 292 - memcpy(cmd.args, "\x88\x02\x02\x02\x02", 5); 293 - cmd.wlen = 5; 294 - cmd.rlen = 5; 299 + cmd_init(&cmd, "\x88\x02\x02\x02\x02", 5, 5); 295 300 ret = si2168_cmd_execute(client, &cmd); 296 301 if (ret) 297 302 goto err; 298 303 299 304 /* that has no big effect */ 300 305 if (c->delivery_system == SYS_DVBT) 301 - memcpy(cmd.args, "\x89\x21\x06\x11\xff\x98", 6); 306 + cmd_init(&cmd, "\x89\x21\x06\x11\xff\x98", 6, 3); 302 307 else if (c->delivery_system == SYS_DVBC_ANNEX_A) 303 - memcpy(cmd.args, "\x89\x21\x06\x11\x89\xf0", 6); 308 + cmd_init(&cmd, "\x89\x21\x06\x11\x89\xf0", 6, 3); 304 309 else if (c->delivery_system == SYS_DVBT2) 305 - memcpy(cmd.args, "\x89\x21\x06\x11\x89\x20", 6); 306 - cmd.wlen = 6; 307 - cmd.rlen = 3; 310 + cmd_init(&cmd, "\x89\x21\x06\x11\x89\x20", 6, 3); 308 311 ret = si2168_cmd_execute(client, &cmd); 309 312 if (ret) 310 313 goto err; ··· 317 328 goto err; 318 329 } 319 330 320 - memcpy(cmd.args, "\x51\x03", 2); 321 - cmd.wlen = 2; 322 - cmd.rlen = 12; 331 + cmd_init(&cmd, "\x51\x03", 2, 12); 323 332 ret = si2168_cmd_execute(client, &cmd); 324 333 if (ret) 325 334 goto err; 326 335 327 - memcpy(cmd.args, "\x12\x08\x04", 3); 328 - cmd.wlen = 3; 329 - cmd.rlen = 3; 336 + cmd_init(&cmd, "\x12\x08\x04", 3, 3); 330 337 ret = si2168_cmd_execute(client, &cmd); 331 338 if (ret) 332 339 goto err; 333 340 334 - memcpy(cmd.args, "\x14\x00\x0c\x10\x12\x00", 6); 335 - cmd.wlen = 6; 336 - cmd.rlen = 4; 341 + cmd_init(&cmd, "\x14\x00\x0c\x10\x12\x00", 6, 4); 337 342 ret = si2168_cmd_execute(client, &cmd); 338 343 if (ret) 339 344 goto err; 340 345 341 - memcpy(cmd.args, "\x14\x00\x06\x10\x24\x00", 6); 342 - cmd.wlen = 6; 343 - cmd.rlen = 4; 346 + cmd_init(&cmd, "\x14\x00\x06\x10\x24\x00", 6, 4); 344 347 ret = si2168_cmd_execute(client, &cmd); 345 348 if (ret) 346 349 goto err; 347 350 348 - memcpy(cmd.args, "\x14\x00\x07\x10\x00\x24", 6); 349 - cmd.wlen = 6; 350 - cmd.rlen = 4; 351 + cmd_init(&cmd, "\x14\x00\x07\x10\x00\x24", 6, 4); 351 352 ret = si2168_cmd_execute(client, &cmd); 352 353 if (ret) 353 354 goto err; 354 355 355 - memcpy(cmd.args, "\x14\x00\x0a\x10\x00\x00", 6); 356 + cmd_init(&cmd, "\x14\x00\x0a\x10\x00\x00", 6, 4); 356 357 cmd.args[4] = delivery_system | bandwidth; 357 358 if (dev->spectral_inversion) 358 359 cmd.args[5] |= 1; 359 - cmd.wlen = 6; 360 - cmd.rlen = 4; 361 360 ret = si2168_cmd_execute(client, &cmd); 362 361 if (ret) 363 362 goto err; 364 363 365 364 /* set DVB-C symbol rate */ 366 365 if (c->delivery_system == SYS_DVBC_ANNEX_A) { 367 - memcpy(cmd.args, "\x14\x00\x02\x11", 4); 366 + cmd_init(&cmd, "\x14\x00\x02\x11\x00\x00", 6, 4); 368 367 cmd.args[4] = ((c->symbol_rate / 1000) >> 0) & 0xff; 369 368 cmd.args[5] = ((c->symbol_rate / 1000) >> 8) & 0xff; 370 - cmd.wlen = 6; 371 - cmd.rlen = 4; 372 369 ret = si2168_cmd_execute(client, &cmd); 373 370 if (ret) 374 371 goto err; 375 372 } 376 373 377 - memcpy(cmd.args, "\x14\x00\x0f\x10\x10\x00", 6); 378 - cmd.wlen = 6; 379 - cmd.rlen = 4; 374 + cmd_init(&cmd, "\x14\x00\x0f\x10\x10\x00", 6, 4); 380 375 ret = si2168_cmd_execute(client, &cmd); 381 376 if (ret) 382 377 goto err; 383 378 384 - memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x08", 6); 379 + cmd_init(&cmd, "\x14\x00\x09\x10\xe3\x08", 6, 4); 385 380 cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10; 386 - cmd.wlen = 6; 387 - cmd.rlen = 4; 388 381 ret = si2168_cmd_execute(client, &cmd); 389 382 if (ret) 390 383 goto err; 391 384 392 - memcpy(cmd.args, "\x14\x00\x08\x10\xd7\x05", 6); 385 + cmd_init(&cmd, "\x14\x00\x08\x10\xd7\x05", 6, 4); 393 386 cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10; 394 - cmd.wlen = 6; 395 - cmd.rlen = 4; 396 387 ret = si2168_cmd_execute(client, &cmd); 397 388 if (ret) 398 389 goto err; 399 390 400 - memcpy(cmd.args, "\x14\x00\x01\x12\x00\x00", 6); 401 - cmd.wlen = 6; 402 - cmd.rlen = 4; 391 + cmd_init(&cmd, "\x14\x00\x01\x12\x00\x00", 6, 4); 403 392 ret = si2168_cmd_execute(client, &cmd); 404 393 if (ret) 405 394 goto err; 406 395 407 - memcpy(cmd.args, "\x14\x00\x01\x03\x0c\x00", 6); 408 - cmd.wlen = 6; 409 - cmd.rlen = 4; 396 + cmd_init(&cmd, "\x14\x00\x01\x03\x0c\x00", 6, 4); 410 397 ret = si2168_cmd_execute(client, &cmd); 411 398 if (ret) 412 399 goto err; 413 400 414 - memcpy(cmd.args, "\x85", 1); 415 - cmd.wlen = 1; 416 - cmd.rlen = 1; 401 + cmd_init(&cmd, "\x85", 1, 1); 417 402 ret = si2168_cmd_execute(client, &cmd); 418 403 if (ret) 419 404 goto err; ··· 417 454 dev_dbg(&client->dev, "\n"); 418 455 419 456 /* initialize */ 420 - memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13); 421 - cmd.wlen = 13; 422 - cmd.rlen = 0; 457 + cmd_init(&cmd, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 458 + 13, 0); 423 459 ret = si2168_cmd_execute(client, &cmd); 424 460 if (ret) 425 461 goto err; 426 462 427 463 if (dev->warm) { 428 464 /* resume */ 429 - memcpy(cmd.args, "\xc0\x06\x08\x0f\x00\x20\x21\x01", 8); 430 - cmd.wlen = 8; 431 - cmd.rlen = 1; 465 + cmd_init(&cmd, "\xc0\x06\x08\x0f\x00\x20\x21\x01", 8, 1); 432 466 ret = si2168_cmd_execute(client, &cmd); 433 467 if (ret) 434 468 goto err; 435 469 436 470 udelay(100); 437 - memcpy(cmd.args, "\x85", 1); 438 - cmd.wlen = 1; 439 - cmd.rlen = 1; 471 + cmd_init(&cmd, "\x85", 1, 1); 440 472 ret = si2168_cmd_execute(client, &cmd); 441 473 if (ret) 442 474 goto err; ··· 440 482 } 441 483 442 484 /* power up */ 443 - memcpy(cmd.args, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8); 444 - cmd.wlen = 8; 445 - cmd.rlen = 1; 485 + cmd_init(&cmd, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8, 1); 446 486 ret = si2168_cmd_execute(client, &cmd); 447 487 if (ret) 448 488 goto err; ··· 478 522 ret = -EINVAL; 479 523 break; 480 524 } 481 - memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); 482 - cmd.wlen = len; 483 - cmd.rlen = 1; 525 + cmd_init(&cmd, &fw->data[(fw->size - remaining) + 1], 526 + len, 1); 484 527 ret = si2168_cmd_execute(client, &cmd); 485 528 if (ret) 486 529 break; ··· 487 532 } else if (fw->size % 8 == 0) { 488 533 /* firmware is in the old format */ 489 534 for (remaining = fw->size; remaining > 0; remaining -= 8) { 490 - len = 8; 491 - memcpy(cmd.args, &fw->data[fw->size - remaining], len); 492 - cmd.wlen = len; 493 - cmd.rlen = 1; 535 + cmd_init(&cmd, &fw->data[fw->size - remaining], 8, 1); 494 536 ret = si2168_cmd_execute(client, &cmd); 495 537 if (ret) 496 538 break; ··· 504 552 505 553 release_firmware(fw); 506 554 507 - memcpy(cmd.args, "\x01\x01", 2); 508 - cmd.wlen = 2; 509 - cmd.rlen = 1; 555 + cmd_init(&cmd, "\x01\x01", 2, 1); 510 556 ret = si2168_cmd_execute(client, &cmd); 511 557 if (ret) 512 558 goto err; 513 559 514 560 /* query firmware version */ 515 - memcpy(cmd.args, "\x11", 1); 516 - cmd.wlen = 1; 517 - cmd.rlen = 10; 561 + cmd_init(&cmd, "\x11", 1, 10); 518 562 ret = si2168_cmd_execute(client, &cmd); 519 563 if (ret) 520 564 goto err; ··· 568 620 if (dev->version > ('B' << 24 | 4 << 16 | 0 << 8 | 11 << 0)) 569 621 dev->warm = false; 570 622 571 - memcpy(cmd.args, "\x13", 1); 572 - cmd.wlen = 1; 573 - cmd.rlen = 0; 623 + cmd_init(&cmd, "\x13", 1, 0); 574 624 ret = si2168_cmd_execute(client, &cmd); 575 625 if (ret) 576 626 goto err; ··· 594 648 struct si2168_cmd cmd; 595 649 596 650 /* open I2C gate */ 597 - memcpy(cmd.args, "\xc0\x0d\x01", 3); 598 - cmd.wlen = 3; 599 - cmd.rlen = 0; 651 + cmd_init(&cmd, "\xc0\x0d\x01", 3, 0); 600 652 ret = si2168_cmd_execute(client, &cmd); 601 653 if (ret) 602 654 goto err; ··· 612 668 struct si2168_cmd cmd; 613 669 614 670 /* close I2C gate */ 615 - memcpy(cmd.args, "\xc0\x0d\x00", 3); 616 - cmd.wlen = 3; 617 - cmd.rlen = 0; 671 + cmd_init(&cmd, "\xc0\x0d\x00", 3, 0); 618 672 ret = si2168_cmd_execute(client, &cmd); 619 673 if (ret) 620 674 goto err; ··· 683 741 mutex_init(&dev->i2c_mutex); 684 742 685 743 /* Initialize */ 686 - memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13); 687 - cmd.wlen = 13; 688 - cmd.rlen = 0; 744 + cmd_init(&cmd, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 745 + 13, 0); 689 746 ret = si2168_cmd_execute(client, &cmd); 690 747 if (ret) 691 748 goto err_kfree; 692 749 693 750 /* Power up */ 694 - memcpy(cmd.args, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8); 695 - cmd.wlen = 8; 696 - cmd.rlen = 1; 751 + cmd_init(&cmd, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8, 1); 697 752 ret = si2168_cmd_execute(client, &cmd); 698 753 if (ret) 699 754 goto err_kfree; 700 755 701 756 /* Query chip revision */ 702 - memcpy(cmd.args, "\x02", 1); 703 - cmd.wlen = 1; 704 - cmd.rlen = 13; 757 + cmd_init(&cmd, "\x02", 1, 13); 705 758 ret = si2168_cmd_execute(client, &cmd); 706 759 if (ret) 707 760 goto err_kfree;