Loading Documentation/devicetree/bindings/media/video/msm-vfe.txt +107 −108 Original line number Diff line number Diff line Loading @@ -48,11 +48,6 @@ Required properties for child node: Example: qcom,vfe { compatible = "qcom,vfe"; #address-cells = <1>; #size-cells = <1>; vfe0: qcom,vfe0@fda10000 { cell-index = <0>; compatible = "qcom,vfe44"; Loading @@ -63,38 +58,38 @@ qcom,vfe { interrupt-names = "vfe"; vdd-supply = <&gdsc_vfe>; qos-entries = <8>; qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8 0x2DC 0x2E0>; qos-settings = <0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0x0002AAAA>; qos-v2-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-v3-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x2c4 0x2c8 0x2cc 0x2d0 0x2d4 0x2d8 0x2dc 0x2e0>; qos-settings = <0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0x0002aaaa>; qos-v2-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; qos-v3-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <17>; vbif-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xDC 0xF0 0x178 0x17C 0x124 0x160 vbif-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xdc 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-settings = <0x1 0x01010101 0x01010101 0x10010110 0x10101010 0x10101010 0x10101010 0x00001010 0x00001010 0x00000707 0x00000707 0x00000030 0x00000FFF 0x0FFF0FFF 0x00000001 0x22222222 0x00000fff 0x0fff0fff 0x00000001 0x22222222 0x00002222>; vbif-v2-entries = <16>; vbif-v2-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xF0 0x178 0x17C 0x124 0x160 vbif-v2-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-v2-settings = <0x1 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x00000010 0x00000010 0x00000707 0x00000010 0x00000FFF 0x0FFF0FFF 0x00000003 0x22222222 0x00002222>; 0x00000010 0x00000707 0x00000010 0x00000fff 0x0fff0fff 0x00000003 0x22222222 0x00002222>; ds-entries = <17>; ds-regs = <0x988 0x98C 0x990 0x994 0x998 0x99C 0x9A0 0x9A4 0x9A8 0x9AC 0x9B0 0x9B4 0x9B8 0x9BC 0x9C0 0x9C4 0x9C8>; ds-regs = <0x988 0x98c 0x990 0x994 0x998 0x99c 0x9a0 0x9a4 0x9a8 0x9ac 0x9b0 0x9b4 0x9b8 0x9bc 0x9c0 0x9c4 0x9c8>; ds-settings = <0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 Loading @@ -116,38 +111,38 @@ qcom,vfe { interrupt-names = "vfe"; vdd-supply = <&gdsc_vfe>; qos-entries = <8>; qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8 0x2DC 0x2E0>; qos-settings = <0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0x0002AAAA>; qos-v2-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-v3-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x2c4 0x2c8 0x2cc 0x2d0 0x2d4 0x2d8 0x2dc 0x2e0>; qos-settings = <0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0x0002aaaa>; qos-v2-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; qos-v3-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <17>; vbif-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xDC 0xF0 0x178 0x17C 0x124 0x160 vbif-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xdc 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-settings = <0x1 0x01010101 0x01010101 0x10010110 0x10101010 0x10101010 0x10101010 0x00001010 0x00001010 0x00000707 0x00000707 0x00000030 0x00000FFF 0x0FFF0FFF 0x00000001 0x22222222 0x00000fff 0x0fff0fff 0x00000001 0x22222222 0x00002222>; vbif-v2-entries = <16>; vbif-v2-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xF0 0x178 0x17C 0x124 0x160 vbif-v2-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-v2-settings = <0x1 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x00000010 0x00000010 0x00000707 0x00000010 0x00000FFF 0x0FFF0FFF 0x00000003 0x22222222 0x00002222>; 0x00000010 0x00000707 0x00000010 0x00000fff 0x0fff0fff 0x00000003 0x22222222 0x00002222>; ds-entries = <17>; ds-regs = <0x988 0x98C 0x990 0x994 0x998 0x99C 0x9A0 0x9A4 0x9A8 0x9AC 0x9B0 0x9B4 0x9B8 0x9BC 0x9C0 0x9C4 0x9C8>; ds-regs = <0x988 0x98c 0x990 0x994 0x998 0x99c 0x9a0 0x9a4 0x9a8 0x9ac 0x9b0 0x9b4 0x9b8 0x9bc 0x9c0 0x9c4 0x9c8>; ds-settings = <0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 Loading @@ -158,6 +153,10 @@ qcom,vfe { max-clk-nominal = <465000000>; max-clk-turbo = <600000000>; }; qcom,vfe { compatible = "qcom,vfe"; num_child = <2>; }; In version specific file one needs to move only entries that differ between Loading arch/arm/boot/dts/qcom/msm8996-camera.dtsi +145 −147 Original line number Diff line number Diff line Loading @@ -273,12 +273,6 @@ status = "ok"; }; qcom,vfe { compatible = "qcom,vfe"; #address-cells = <1>; #size-cells = <1>; ranges; vfe0: qcom,vfe0@a10000 { cell-index = <0>; compatible = "qcom,vfe47"; Loading Loading @@ -312,39 +306,39 @@ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>; status = "ok"; qos-entries = <8>; qos-regs = <0x404 0x408 0x40C 0x410 0x414 0x418 0x41C 0x420>; qos-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418 0x41c 0x420>; qos-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <1>; vbif-regs = <0x124>; vbif-settings = <0x3>; ds-entries = <17>; ds-regs = <0x424 0x428 0x42C 0x430 0x434 0x438 0x43C 0x440 0x444 0x448 0x44C 0x450 0x454 0x458 0x45C 0x460 0x464>; ds-settings = <0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 ds-regs = <0x424 0x428 0x42c 0x430 0x434 0x438 0x43c 0x440 0x444 0x448 0x44c 0x450 0x454 0x458 0x45c 0x460 0x464>; ds-settings = <0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0x40000103>; max-clk-svs = <300000000>; max-clk-nominal = <465000000>; Loading Loading @@ -384,44 +378,48 @@ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>; status = "ok"; qos-entries = <8>; qos-regs = <0x404 0x408 0x40C 0x410 0x414 0x418 0x41C 0x420>; qos-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418 0x41c 0x420>; qos-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <1>; vbif-regs = <0x124>; vbif-settings = <0x3>; ds-entries = <17>; ds-regs = <0x424 0x428 0x42C 0x430 0x434 0x438 0x43C 0x440 0x444 0x448 0x44C 0x450 0x454 0x458 0x45C 0x460 0x464>; ds-settings = <0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 ds-regs = <0x424 0x428 0x42c 0x430 0x434 0x438 0x43c 0x440 0x444 0x448 0x44c 0x450 0x454 0x458 0x45c 0x460 0x464>; ds-settings = <0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0x40000103>; max-clk-svs = <300000000>; max-clk-nominal = <465000000>; max-clk-turbo = <600000000>; }; qcom,vfe { compatible = "qcom,vfe"; num_child = <2>; }; qcom,cam_smmu { Loading arch/arm/boot/dts/qcom/msm8996.dtsi +3 −0 Original line number Diff line number Diff line Loading @@ -740,6 +740,9 @@ vdd_dig-supply = <&pm8994_s1_corner>; mmpll4_dig-supply = <&pm8994_s1_corner>; mmpll4_analog-supply = <&pm8994_l12>; qcom,vfe0_clk_src-opp-store-vcorner = <&vfe0>; qcom,vfe1_clk_src-opp-store-vcorner = <&vfe1>; qcom,cpp_clk_src-opp-store-vcorner = <&cpp>; clock-names = "xo", "gpll0", "gpll0_div", "pclk0_src", "pclk1_src", "byte0_src", "byte1_src", Loading drivers/media/platform/msm/camera_v2/isp/Makefile +2 −2 Original line number Diff line number Diff line ccflags-y += -Idrivers/media/platform/msm/camera_v2 ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/io ccflags-y += -Idrivers/media/platform/msm/camera_v2/common/ obj-$(CONFIG_MSMB_CAMERA) += msm_isp.o msm_buf_mgr.o msm_isp_util.o msm_isp_axi_util.o msm_isp_stats_util.o obj-$(CONFIG_MSMB_CAMERA) += msm_isp47.o msm_isp46.o msm_isp44.o msm_isp40.o obj-$(CONFIG_MSMB_CAMERA) += msm_buf_mgr.o msm_isp_util.o msm_isp_axi_util.o msm_isp_stats_util.o obj-$(CONFIG_MSMB_CAMERA) += msm_isp47.o msm_isp46.o msm_isp44.o msm_isp40.o msm_isp.o drivers/media/platform/msm/camera_v2/isp/msm_isp.c +52 −19 Original line number Diff line number Diff line Loading @@ -433,13 +433,43 @@ static struct v4l2_file_operations msm_isp_v4l2_fops = { .unlocked_ioctl = msm_isp_v4l2_fops_ioctl }; static int vfe_set_common_data(struct platform_device *pdev) { struct v4l2_subdev *sd = NULL; struct vfe_device *vfe_dev = NULL; sd = (struct v4l2_subdev *)platform_get_drvdata(pdev); if (!sd) { pr_err("%s: Error! Cannot find subdev\n", __func__); return -EPERM; } vfe_dev = (struct vfe_device *)v4l2_get_subdevdata(sd); if (!vfe_dev) { pr_err("%s: Error! Cannot find vfe_dev\n", __func__); return -EPERM; } vfe_dev->common_data = (struct msm_vfe_common_dev_data *) pdev->dev.platform_data; vfe_dev->common_data->dual_vfe_res = &dualvfe; vfe_dev->common_data->dual_vfe_res->axi_data[vfe_dev->pdev->id] = &vfe_dev->axi_data; vfe_dev->common_data->dual_vfe_res->stats_data[vfe_dev->pdev->id] = &vfe_dev->stats_data; vfe_dev->common_data->dual_vfe_res->vfe_dev[vfe_dev->pdev->id] = vfe_dev; return 0; } static int vfe_probe(struct platform_device *pdev) { struct vfe_parent_device *vfe_parent_dev; int rc = 0; struct device_node *node; struct platform_device *new_dev = NULL; const struct device_node *dt_node = pdev->dev.of_node; uint32_t i = 0; char name[10] = "\0"; vfe_parent_dev = kzalloc(sizeof(struct vfe_parent_device), GFP_KERNEL); Loading @@ -459,18 +489,30 @@ static int vfe_probe(struct platform_device *pdev) memset(&vfe_common_data, 0, sizeof(vfe_common_data)); spin_lock_init(&vfe_common_data.common_dev_data_lock); for_each_available_child_of_node(dt_node, node) { new_dev = of_platform_device_create(node, NULL, &pdev->dev); of_property_read_u32(pdev->dev.of_node, "num_child", &vfe_parent_dev->num_hw_sd); for (i = 0; i < vfe_parent_dev->num_hw_sd; i++) { node = NULL; snprintf(name, sizeof(name), "qcom,vfe%d", i); node = of_find_node_by_name(NULL, name); if (!node) { pr_err("%s: Error! Cannot find node in dtsi %s\n", __func__, name); goto probe_fail2; } new_dev = of_find_device_by_node(node); if (!new_dev) { pr_err("Failed to create device %s\n", node->name); pr_err("%s: Failed to find device on bus %s\n", __func__, node->name); goto probe_fail2; } vfe_parent_dev->child_list[vfe_parent_dev->num_hw_sd++] = new_dev; vfe_parent_dev->child_list[i] = new_dev; new_dev->dev.platform_data = (void *)vfe_parent_dev->common_sd->common_data; pr_debug("%s: device creation done\n", __func__); rc = vfe_set_common_data(new_dev); if (rc < 0) goto probe_fail2; } vfe_parent_dev->num_sd = vfe_parent_dev->num_hw_sd; Loading Loading @@ -513,9 +555,6 @@ int vfe_hw_probe(struct platform_device *pdev) goto probe_fail2; } vfe_dev->common_data = (struct msm_vfe_common_dev_data *) pdev->dev.platform_data; if (pdev->dev.of_node) { of_property_read_u32(pdev->dev.of_node, "cell-index", &pdev->id); Loading @@ -542,13 +581,7 @@ int vfe_hw_probe(struct platform_device *pdev) ISP_DBG("%s: device id = %d\n", __func__, pdev->id); vfe_dev->pdev = pdev; vfe_dev->common_data->dual_vfe_res = &dualvfe; vfe_dev->common_data->dual_vfe_res->axi_data[vfe_dev->pdev->id] = &vfe_dev->axi_data; vfe_dev->common_data->dual_vfe_res->stats_data[vfe_dev->pdev->id] = &vfe_dev->stats_data; vfe_dev->common_data->dual_vfe_res->vfe_dev[vfe_dev->pdev->id] = vfe_dev; rc = vfe_dev->hw_info->vfe_ops.core_ops.get_platform_data(vfe_dev); if (rc < 0) { Loading Loading @@ -642,7 +675,7 @@ static void __exit msm_vfe_exit_module(void) platform_driver_unregister(&vfe_driver); } module_init(msm_vfe_init_module); late_initcall(msm_vfe_init_module); module_exit(msm_vfe_exit_module); MODULE_DESCRIPTION("MSM VFE driver"); MODULE_LICENSE("GPL v2"); Loading
Documentation/devicetree/bindings/media/video/msm-vfe.txt +107 −108 Original line number Diff line number Diff line Loading @@ -48,11 +48,6 @@ Required properties for child node: Example: qcom,vfe { compatible = "qcom,vfe"; #address-cells = <1>; #size-cells = <1>; vfe0: qcom,vfe0@fda10000 { cell-index = <0>; compatible = "qcom,vfe44"; Loading @@ -63,38 +58,38 @@ qcom,vfe { interrupt-names = "vfe"; vdd-supply = <&gdsc_vfe>; qos-entries = <8>; qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8 0x2DC 0x2E0>; qos-settings = <0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0x0002AAAA>; qos-v2-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-v3-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x2c4 0x2c8 0x2cc 0x2d0 0x2d4 0x2d8 0x2dc 0x2e0>; qos-settings = <0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0x0002aaaa>; qos-v2-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; qos-v3-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <17>; vbif-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xDC 0xF0 0x178 0x17C 0x124 0x160 vbif-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xdc 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-settings = <0x1 0x01010101 0x01010101 0x10010110 0x10101010 0x10101010 0x10101010 0x00001010 0x00001010 0x00000707 0x00000707 0x00000030 0x00000FFF 0x0FFF0FFF 0x00000001 0x22222222 0x00000fff 0x0fff0fff 0x00000001 0x22222222 0x00002222>; vbif-v2-entries = <16>; vbif-v2-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xF0 0x178 0x17C 0x124 0x160 vbif-v2-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-v2-settings = <0x1 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x00000010 0x00000010 0x00000707 0x00000010 0x00000FFF 0x0FFF0FFF 0x00000003 0x22222222 0x00002222>; 0x00000010 0x00000707 0x00000010 0x00000fff 0x0fff0fff 0x00000003 0x22222222 0x00002222>; ds-entries = <17>; ds-regs = <0x988 0x98C 0x990 0x994 0x998 0x99C 0x9A0 0x9A4 0x9A8 0x9AC 0x9B0 0x9B4 0x9B8 0x9BC 0x9C0 0x9C4 0x9C8>; ds-regs = <0x988 0x98c 0x990 0x994 0x998 0x99c 0x9a0 0x9a4 0x9a8 0x9ac 0x9b0 0x9b4 0x9b8 0x9bc 0x9c0 0x9c4 0x9c8>; ds-settings = <0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 Loading @@ -116,38 +111,38 @@ qcom,vfe { interrupt-names = "vfe"; vdd-supply = <&gdsc_vfe>; qos-entries = <8>; qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8 0x2DC 0x2E0>; qos-settings = <0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0x0002AAAA>; qos-v2-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-v3-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x2c4 0x2c8 0x2cc 0x2d0 0x2d4 0x2d8 0x2dc 0x2e0>; qos-settings = <0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0x0002aaaa>; qos-v2-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; qos-v3-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <17>; vbif-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xDC 0xF0 0x178 0x17C 0x124 0x160 vbif-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xdc 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-settings = <0x1 0x01010101 0x01010101 0x10010110 0x10101010 0x10101010 0x10101010 0x00001010 0x00001010 0x00000707 0x00000707 0x00000030 0x00000FFF 0x0FFF0FFF 0x00000001 0x22222222 0x00000fff 0x0fff0fff 0x00000001 0x22222222 0x00002222>; vbif-v2-entries = <16>; vbif-v2-regs = <0x4 0xB0 0xB4 0xB8 0xC0 0xC4 0xC8 0xD0 0xD4 0xD8 0xF0 0x178 0x17C 0x124 0x160 vbif-v2-regs = <0x4 0xb0 0xb4 0xb8 0xc0 0xc4 0xc8 0xd0 0xd4 0xd8 0xf0 0x178 0x17c 0x124 0x160 0x164>; vbif-v2-settings = <0x1 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x10101010 0x00000010 0x00000010 0x00000707 0x00000010 0x00000FFF 0x0FFF0FFF 0x00000003 0x22222222 0x00002222>; 0x00000010 0x00000707 0x00000010 0x00000fff 0x0fff0fff 0x00000003 0x22222222 0x00002222>; ds-entries = <17>; ds-regs = <0x988 0x98C 0x990 0x994 0x998 0x99C 0x9A0 0x9A4 0x9A8 0x9AC 0x9B0 0x9B4 0x9B8 0x9BC 0x9C0 0x9C4 0x9C8>; ds-regs = <0x988 0x98c 0x990 0x994 0x998 0x99c 0x9a0 0x9a4 0x9a8 0x9ac 0x9b0 0x9b4 0x9b8 0x9bc 0x9c0 0x9c4 0x9c8>; ds-settings = <0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 0x44441111 Loading @@ -158,6 +153,10 @@ qcom,vfe { max-clk-nominal = <465000000>; max-clk-turbo = <600000000>; }; qcom,vfe { compatible = "qcom,vfe"; num_child = <2>; }; In version specific file one needs to move only entries that differ between Loading
arch/arm/boot/dts/qcom/msm8996-camera.dtsi +145 −147 Original line number Diff line number Diff line Loading @@ -273,12 +273,6 @@ status = "ok"; }; qcom,vfe { compatible = "qcom,vfe"; #address-cells = <1>; #size-cells = <1>; ranges; vfe0: qcom,vfe0@a10000 { cell-index = <0>; compatible = "qcom,vfe47"; Loading Loading @@ -312,39 +306,39 @@ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>; status = "ok"; qos-entries = <8>; qos-regs = <0x404 0x408 0x40C 0x410 0x414 0x418 0x41C 0x420>; qos-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418 0x41c 0x420>; qos-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <1>; vbif-regs = <0x124>; vbif-settings = <0x3>; ds-entries = <17>; ds-regs = <0x424 0x428 0x42C 0x430 0x434 0x438 0x43C 0x440 0x444 0x448 0x44C 0x450 0x454 0x458 0x45C 0x460 0x464>; ds-settings = <0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 ds-regs = <0x424 0x428 0x42c 0x430 0x434 0x438 0x43c 0x440 0x444 0x448 0x44c 0x450 0x454 0x458 0x45c 0x460 0x464>; ds-settings = <0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0x40000103>; max-clk-svs = <300000000>; max-clk-nominal = <465000000>; Loading Loading @@ -384,44 +378,48 @@ qcom,clock-rates = <0 0 0 0 320000000 0 0 0 0 0 0 0>; status = "ok"; qos-entries = <8>; qos-regs = <0x404 0x408 0x40C 0x410 0x414 0x418 0x41C 0x420>; qos-settings = <0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0xAAA9AAA9 0x0001AAA9>; qos-regs = <0x404 0x408 0x40c 0x410 0x414 0x418 0x41c 0x420>; qos-settings = <0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0xaaa9aaa9 0x0001aaa9>; vbif-entries = <1>; vbif-regs = <0x124>; vbif-settings = <0x3>; ds-entries = <17>; ds-regs = <0x424 0x428 0x42C 0x430 0x434 0x438 0x43C 0x440 0x444 0x448 0x44C 0x450 0x454 0x458 0x45C 0x460 0x464>; ds-settings = <0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 0xCCCC0011 ds-regs = <0x424 0x428 0x42c 0x430 0x434 0x438 0x43c 0x440 0x444 0x448 0x44c 0x450 0x454 0x458 0x45c 0x460 0x464>; ds-settings = <0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0xcccc0011 0x40000103>; max-clk-svs = <300000000>; max-clk-nominal = <465000000>; max-clk-turbo = <600000000>; }; qcom,vfe { compatible = "qcom,vfe"; num_child = <2>; }; qcom,cam_smmu { Loading
arch/arm/boot/dts/qcom/msm8996.dtsi +3 −0 Original line number Diff line number Diff line Loading @@ -740,6 +740,9 @@ vdd_dig-supply = <&pm8994_s1_corner>; mmpll4_dig-supply = <&pm8994_s1_corner>; mmpll4_analog-supply = <&pm8994_l12>; qcom,vfe0_clk_src-opp-store-vcorner = <&vfe0>; qcom,vfe1_clk_src-opp-store-vcorner = <&vfe1>; qcom,cpp_clk_src-opp-store-vcorner = <&cpp>; clock-names = "xo", "gpll0", "gpll0_div", "pclk0_src", "pclk1_src", "byte0_src", "byte1_src", Loading
drivers/media/platform/msm/camera_v2/isp/Makefile +2 −2 Original line number Diff line number Diff line ccflags-y += -Idrivers/media/platform/msm/camera_v2 ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/io ccflags-y += -Idrivers/media/platform/msm/camera_v2/common/ obj-$(CONFIG_MSMB_CAMERA) += msm_isp.o msm_buf_mgr.o msm_isp_util.o msm_isp_axi_util.o msm_isp_stats_util.o obj-$(CONFIG_MSMB_CAMERA) += msm_isp47.o msm_isp46.o msm_isp44.o msm_isp40.o obj-$(CONFIG_MSMB_CAMERA) += msm_buf_mgr.o msm_isp_util.o msm_isp_axi_util.o msm_isp_stats_util.o obj-$(CONFIG_MSMB_CAMERA) += msm_isp47.o msm_isp46.o msm_isp44.o msm_isp40.o msm_isp.o
drivers/media/platform/msm/camera_v2/isp/msm_isp.c +52 −19 Original line number Diff line number Diff line Loading @@ -433,13 +433,43 @@ static struct v4l2_file_operations msm_isp_v4l2_fops = { .unlocked_ioctl = msm_isp_v4l2_fops_ioctl }; static int vfe_set_common_data(struct platform_device *pdev) { struct v4l2_subdev *sd = NULL; struct vfe_device *vfe_dev = NULL; sd = (struct v4l2_subdev *)platform_get_drvdata(pdev); if (!sd) { pr_err("%s: Error! Cannot find subdev\n", __func__); return -EPERM; } vfe_dev = (struct vfe_device *)v4l2_get_subdevdata(sd); if (!vfe_dev) { pr_err("%s: Error! Cannot find vfe_dev\n", __func__); return -EPERM; } vfe_dev->common_data = (struct msm_vfe_common_dev_data *) pdev->dev.platform_data; vfe_dev->common_data->dual_vfe_res = &dualvfe; vfe_dev->common_data->dual_vfe_res->axi_data[vfe_dev->pdev->id] = &vfe_dev->axi_data; vfe_dev->common_data->dual_vfe_res->stats_data[vfe_dev->pdev->id] = &vfe_dev->stats_data; vfe_dev->common_data->dual_vfe_res->vfe_dev[vfe_dev->pdev->id] = vfe_dev; return 0; } static int vfe_probe(struct platform_device *pdev) { struct vfe_parent_device *vfe_parent_dev; int rc = 0; struct device_node *node; struct platform_device *new_dev = NULL; const struct device_node *dt_node = pdev->dev.of_node; uint32_t i = 0; char name[10] = "\0"; vfe_parent_dev = kzalloc(sizeof(struct vfe_parent_device), GFP_KERNEL); Loading @@ -459,18 +489,30 @@ static int vfe_probe(struct platform_device *pdev) memset(&vfe_common_data, 0, sizeof(vfe_common_data)); spin_lock_init(&vfe_common_data.common_dev_data_lock); for_each_available_child_of_node(dt_node, node) { new_dev = of_platform_device_create(node, NULL, &pdev->dev); of_property_read_u32(pdev->dev.of_node, "num_child", &vfe_parent_dev->num_hw_sd); for (i = 0; i < vfe_parent_dev->num_hw_sd; i++) { node = NULL; snprintf(name, sizeof(name), "qcom,vfe%d", i); node = of_find_node_by_name(NULL, name); if (!node) { pr_err("%s: Error! Cannot find node in dtsi %s\n", __func__, name); goto probe_fail2; } new_dev = of_find_device_by_node(node); if (!new_dev) { pr_err("Failed to create device %s\n", node->name); pr_err("%s: Failed to find device on bus %s\n", __func__, node->name); goto probe_fail2; } vfe_parent_dev->child_list[vfe_parent_dev->num_hw_sd++] = new_dev; vfe_parent_dev->child_list[i] = new_dev; new_dev->dev.platform_data = (void *)vfe_parent_dev->common_sd->common_data; pr_debug("%s: device creation done\n", __func__); rc = vfe_set_common_data(new_dev); if (rc < 0) goto probe_fail2; } vfe_parent_dev->num_sd = vfe_parent_dev->num_hw_sd; Loading Loading @@ -513,9 +555,6 @@ int vfe_hw_probe(struct platform_device *pdev) goto probe_fail2; } vfe_dev->common_data = (struct msm_vfe_common_dev_data *) pdev->dev.platform_data; if (pdev->dev.of_node) { of_property_read_u32(pdev->dev.of_node, "cell-index", &pdev->id); Loading @@ -542,13 +581,7 @@ int vfe_hw_probe(struct platform_device *pdev) ISP_DBG("%s: device id = %d\n", __func__, pdev->id); vfe_dev->pdev = pdev; vfe_dev->common_data->dual_vfe_res = &dualvfe; vfe_dev->common_data->dual_vfe_res->axi_data[vfe_dev->pdev->id] = &vfe_dev->axi_data; vfe_dev->common_data->dual_vfe_res->stats_data[vfe_dev->pdev->id] = &vfe_dev->stats_data; vfe_dev->common_data->dual_vfe_res->vfe_dev[vfe_dev->pdev->id] = vfe_dev; rc = vfe_dev->hw_info->vfe_ops.core_ops.get_platform_data(vfe_dev); if (rc < 0) { Loading Loading @@ -642,7 +675,7 @@ static void __exit msm_vfe_exit_module(void) platform_driver_unregister(&vfe_driver); } module_init(msm_vfe_init_module); late_initcall(msm_vfe_init_module); module_exit(msm_vfe_exit_module); MODULE_DESCRIPTION("MSM VFE driver"); MODULE_LICENSE("GPL v2");