From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Meng Wei Date: Tue, 27 Nov 2018 19:32:21 +0800 Subject: [PATCH] media: ti964: pdata for AS_1140 pdata for AS_1140 ti964. Change-Id: I0b20a72658a61a8510111f5aa74fd089235013a0 Tracked-On: PKT-1624 Signed-off-by: Chen Meng J Signed-off-by: Meng Wei --- .../media/platform/intel/ipu4-bxt-p-pdata.c | 269 ++++++++++++++++++ 1 file changed, 269 insertions(+) diff --git a/drivers/media/platform/intel/ipu4-bxt-p-pdata.c b/drivers/media/platform/intel/ipu4-bxt-p-pdata.c index e7e66777a982..8bdbddace9cf 100644 --- a/drivers/media/platform/intel/ipu4-bxt-p-pdata.c +++ b/drivers/media/platform/intel/ipu4-bxt-p-pdata.c @@ -869,6 +869,273 @@ static struct ipu_isys_subdev_info ti964_sd_2 = { }; #endif +#if IS_ENABLED(CONFIG_VIDEO_TI964) /* for AS_1140 */ +#define AS_1140_TI964_I2C_ADAPTER 2 +#define AS_1140_TI964_I2C_ADAPTER_2 4 + +static struct ipu_isys_csi2_config as_1140_ti964_csi2_cfg = { + .nlanes = TI964_LANES, + .port = 0, +}; + +static struct ipu_isys_csi2_config as_1140_ti964_csi2_cfg_2 = { + .nlanes = TI964_LANES, + .port = 4, +}; + +static struct ti964_subdev_info as_1140_ti964_subdevs[] = { +#ifdef CONFIG_INTEL_IPU4_OV10635 + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635A_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 0, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'a', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635B_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 1, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'b', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635C_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 2, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'c', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635D_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 3, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'd', + }, +#endif +#ifdef CONFIG_INTEL_IPU4_OV10640 + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640A_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 0, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'a', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640B_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 1, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'b', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640C_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 2, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'c', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640D_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 3, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'd', + }, +#endif +#ifdef CONFIG_INTEL_IPU4_MAGNA + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = MAGNA_ADDRESS_A, + .platform_data = &magna_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 0, + .phy_i2c_addr = MAGNA_PHY_ADDR, + .suffix = 'a', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = MAGNA_ADDRESS_B, + .platform_data = &magna_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + .rx_port = 1, + .phy_i2c_addr = MAGNA_PHY_ADDR, + .suffix = 'b', + }, +#endif +}; + +static struct ti964_subdev_info as_1140_ti964_subdevs_2[] = { +#ifdef CONFIG_INTEL_IPU4_OV10635 + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635A_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 0, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'e', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635B_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 1, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'f', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635C_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 2, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'g', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10635D_I2C_ADDRESS, + .platform_data = &ov10635_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 3, + .phy_i2c_addr = OV10635_I2C_PHY_ADDR, + .suffix = 'h', + }, +#endif +#ifdef CONFIG_INTEL_IPU4_OV10640 + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640A_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 0, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'e', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640B_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 1, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'f', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640C_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 2, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'g', + }, + { + .board_info = { + .type = CRLMODULE_NAME, + .addr = OV10640D_I2C_ADDRESS, + .platform_data = &ov10640_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + .rx_port = 3, + .phy_i2c_addr = OV10640_I2C_PHY_ADDR, + .suffix = 'h', + }, +#endif +}; + +static struct ti964_pdata as_1140_ti964_pdata = { + .subdev_info = as_1140_ti964_subdevs, + .subdev_num = ARRAY_SIZE(as_1140_ti964_subdevs), + .reset_gpio = GPIO_BASE + 62, + .suffix = 'a', +}; + +static struct ipu_isys_subdev_info as_1140_ti964_sd = { + .csi2 = &as_1140_ti964_csi2_cfg, + .i2c = { + .board_info = { + .type = "ti964", + .addr = TI964_I2C_ADDRESS, + .platform_data = &as_1140_ti964_pdata, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER, + } +}; + +static struct ti964_pdata as_1140_ti964_pdata_2 = { + .subdev_info = as_1140_ti964_subdevs_2, + .subdev_num = ARRAY_SIZE(as_1140_ti964_subdevs_2), + .reset_gpio = GPIO_BASE + 69, + .suffix = 'b', +}; + +static struct ipu_isys_subdev_info as_1140_ti964_sd_2 = { + .csi2 = &as_1140_ti964_csi2_cfg_2, + .i2c = { + .board_info = { + .type = "ti964", + .addr = TI964_I2C_ADDRESS, + .platform_data = &as_1140_ti964_pdata_2, + }, + .i2c_adapter_id = AS_1140_TI964_I2C_ADAPTER_2, + } +}; +#endif + #ifdef CONFIG_INTEL_IPU4_OX03A10 #define OX03A10_LANES 4 #define OX03A10_I2C_PHY_ADDR 0x6c @@ -1153,6 +1420,8 @@ static struct ipu_isys_subdev_pdata pdata = { #if IS_ENABLED(CONFIG_VIDEO_TI964) &ti964_sd, &ti964_sd_2, + &as_1140_ti964_sd, + &as_1140_ti964_sd_2, #endif #if IS_ENABLED(CONFIG_VIDEO_TI960) &ti960_sd, -- https://clearlinux.org