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

Configure Feed

Select the types of activity you want to include in your feed.

media: i2c: imx290: Correct register sizes

Define registers with the appropriate size, using the variable-size
register access mechanism that has just been introduced. This simplifies
the code.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

authored by

Laurent Pinchart and committed by
Sakari Ailus
454a86f3 e70abe88

+9 -30
+9 -30
drivers/media/i2c/imx290.c
··· 32 32 #define IMX290_REGHOLD IMX290_REG_8BIT(0x3001) 33 33 #define IMX290_XMSTA IMX290_REG_8BIT(0x3002) 34 34 #define IMX290_FR_FDG_SEL IMX290_REG_8BIT(0x3009) 35 - #define IMX290_BLKLEVEL_LOW IMX290_REG_8BIT(0x300a) 36 - #define IMX290_BLKLEVEL_HIGH IMX290_REG_8BIT(0x300b) 35 + #define IMX290_BLKLEVEL IMX290_REG_16BIT(0x300a) 37 36 #define IMX290_GAIN IMX290_REG_8BIT(0x3014) 38 - #define IMX290_HMAX_LOW IMX290_REG_8BIT(0x301c) 39 - #define IMX290_HMAX_HIGH IMX290_REG_8BIT(0x301d) 37 + #define IMX290_HMAX IMX290_REG_16BIT(0x301c) 40 38 #define IMX290_PGCTRL IMX290_REG_8BIT(0x308c) 39 + #define IMX290_CHIP_ID IMX290_REG_16BIT(0x319a) 41 40 #define IMX290_PHY_LANE_NUM IMX290_REG_8BIT(0x3407) 42 41 #define IMX290_CSI_LANE_MODE IMX290_REG_8BIT(0x3443) 43 42 ··· 460 461 break; 461 462 case V4L2_CID_TEST_PATTERN: 462 463 if (ctrl->val) { 463 - imx290_write_reg(imx290, IMX290_BLKLEVEL_LOW, 0x00); 464 - imx290_write_reg(imx290, IMX290_BLKLEVEL_HIGH, 0x00); 464 + imx290_write_reg(imx290, IMX290_BLKLEVEL, 0); 465 465 usleep_range(10000, 11000); 466 466 imx290_write_reg(imx290, IMX290_PGCTRL, 467 467 (u8)(IMX290_PGCTRL_REGEN | ··· 470 472 imx290_write_reg(imx290, IMX290_PGCTRL, 0x00); 471 473 usleep_range(10000, 11000); 472 474 if (imx290->bpp == 10) 473 - imx290_write_reg(imx290, IMX290_BLKLEVEL_LOW, 475 + imx290_write_reg(imx290, IMX290_BLKLEVEL, 474 476 0x3c); 475 477 else /* 12 bits per pixel */ 476 - imx290_write_reg(imx290, IMX290_BLKLEVEL_LOW, 478 + imx290_write_reg(imx290, IMX290_BLKLEVEL, 477 479 0xf0); 478 - imx290_write_reg(imx290, IMX290_BLKLEVEL_HIGH, 0x00); 479 480 } 480 481 break; 481 482 default: ··· 666 669 return 0; 667 670 } 668 671 669 - static int imx290_set_hmax(struct imx290 *imx290, u32 val) 670 - { 671 - int ret; 672 - 673 - ret = imx290_write_reg(imx290, IMX290_HMAX_LOW, (val & 0xff)); 674 - if (ret) { 675 - dev_err(imx290->dev, "Error setting HMAX register\n"); 676 - return ret; 677 - } 678 - 679 - ret = imx290_write_reg(imx290, IMX290_HMAX_HIGH, ((val >> 8) & 0xff)); 680 - if (ret) { 681 - dev_err(imx290->dev, "Error setting HMAX register\n"); 682 - return ret; 683 - } 684 - 685 - return 0; 686 - } 687 - 688 672 /* Start streaming */ 689 673 static int imx290_start_streaming(struct imx290 *imx290) 690 674 { ··· 694 716 dev_err(imx290->dev, "Could not set current mode\n"); 695 717 return ret; 696 718 } 697 - ret = imx290_set_hmax(imx290, imx290->current_mode->hmax); 698 - if (ret < 0) 719 + 720 + ret = imx290_write_reg(imx290, IMX290_HMAX, imx290->current_mode->hmax); 721 + if (ret) 699 722 return ret; 700 723 701 724 /* Apply customized values from user */