diff --git a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts index a112142de..0e25cae4c 100644 --- a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts +++ b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts @@ -362,7 +362,7 @@ compatible = "amlogic, vm"; memory-region = <&vm0_cma_reserved>; dev_name = "vm0"; - status = "disabled"; + status = "okay"; vm_id = <0>; }; @@ -370,7 +370,7 @@ /*bt656 gpio conflict with i2c0*/ compatible = "amlogic, amvdec_656in"; dev_name = "amvdec_656in"; - status = "disabled"; + status = "okay"; reg = <0x0 0xffe02000 0x0 0x7c>; //clocks = <&clkc CLKID_BT656_COMP>, // <&clkc CLKID_BT656>; @@ -379,17 +379,17 @@ /* bt656in1, bt656in2 */ bt656in1 { bt656_id = <1>; - status = "disabled"; + status = "okay"; }; }; aml_cams { compatible = "amlogic, cams_prober"; - status = "disabled"; + status = "okay"; pinctrl-names="default"; - pinctrl-0=<&gen_clk_ee_z>; - //clocks = <&clkc CLKID_GEN_CLK>; - //clock-names = "g12a_24m"; + pinctrl-0=<&clk12_24_z_pins>; + clocks = <&clkc CLKID_24M_CLK_GATE>; + clock-names = "g12a_24m"; cam_0{ cam_name = "ov5640"; front_back = <0>; @@ -1263,10 +1263,16 @@ }; &i2c2 { - status = "disabled"; + status = "okay"; pinctrl-names="default"; pinctrl-0=<&i2c2_master_pins3>; clock-frequency = <100000>; + ov5640@3c { + compatible = "ov5640"; + reg = <0x3c>; + //reg = <0x6c>; + status = "okay"; + }; }; &i2c3 { diff --git a/arch/arm64/configs/meson64_a64_smarthome_defconfig b/arch/arm64/configs/meson64_a64_smarthome_defconfig index 093a52a68..115ba1174 100644 --- a/arch/arm64/configs/meson64_a64_smarthome_defconfig +++ b/arch/arm64/configs/meson64_a64_smarthome_defconfig @@ -422,7 +422,7 @@ CONFIG_AMLOGIC_WSS=y CONFIG_AMLOGIC_VDAC=y CONFIG_AMLOGIC_VIDEO_CAPTURE=m CONFIG_AMLOGIC_VM_DISABLE_VIDEOLAYER=y -CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640=m +CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640=y CONFIG_AMLOGIC_MEDIA_CAMERA_UTILS=y CONFIG_AMLOGIC_MEDIA_VIDEO=y CONFIG_AMLOGIC_MEDIA_VRR=y diff --git a/drivers/media/camera/Kconfig b/drivers/media/camera/Kconfig index 1beac65b6..4b18c2c3a 100755 --- a/drivers/media/camera/Kconfig +++ b/drivers/media/camera/Kconfig @@ -173,7 +173,6 @@ config AMLOGIC_VIDEO_CAPTURE_GC2155 config AMLOGIC_VIDEO_CAPTURE_GC2145 tristate "Amlogic Platform Capture Driver for GC2145" - depends on AMLOGIC_VIDEO_CAPTURE select VIDEOBUF_VMALLOC select AMLOGIC_VIDEOIN_MANAGER select TVIN @@ -198,7 +197,6 @@ config AMLOGIC_VIDEO_CAPTURE_GC2145_MIPI config AMLOGIC_VIDEO_CAPTURE_OV5640 tristate "Amlogic Platform Capture Driver for OV5640" - depends on AMLOGIC_VIDEO_CAPTURE select VIDEOBUF_VMALLOC select AMLOGIC_VIDEOIN_MANAGER select TVIN diff --git a/drivers/media/camera/Makefile b/drivers/media/camera/Makefile index 2004e32b5..cfb644590 100644 --- a/drivers/media/camera/Makefile +++ b/drivers/media/camera/Makefile @@ -20,6 +20,7 @@ $(MODULE_CAMERA_NAME)-y = common/flashlight.o $(MODULE_CAMERA_NAME)-y += common/plat_ctrl.o $(MODULE_CAMERA_NAME)-y += common/vm.o $(MODULE_CAMERA_NAME)-y += common/cam_prober.o +$(MODULE_CAMERA_NAME)-y += ov5640.o # $(MODULE_CAMERA_NAME)-$(CONFIG_AMLOGIC_VIDEO_CAPTURE_GC2145) += camera/gc2145.o # $(MODULE_CAMERA_NAME)-$(CONFIG_AMLOGIC_VIDEO_CAPTURE_GC2145_MIPI) += camera/gc2145_mipi.o -$(MODULE_CAMERA_NAME)-$(CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640) += ov5640.o \ No newline at end of file +# $(MODULE_CAMERA_NAME)-$(CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640) += ov5640.o \ No newline at end of file diff --git a/drivers/media/camera/common/cam_prober.c b/drivers/media/camera/common/cam_prober.c index 7a1ddfd48..1b3dfcdbb 100644 --- a/drivers/media/camera/common/cam_prober.c +++ b/drivers/media/camera/common/cam_prober.c @@ -1814,6 +1814,7 @@ int __init aml_cams_prober_init(void) #ifdef CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640 ov5640_i2c_driver_init(); #endif + return 0; } diff --git a/drivers/media/camera/ov5640.c b/drivers/media/camera/ov5640.c index 06c78288a..d1037beaf 100644 --- a/drivers/media/camera/ov5640.c +++ b/drivers/media/camera/ov5640.c @@ -3254,7 +3254,7 @@ static const struct v4l2_subdev_ops ov5640_ops = { static int ov5640_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct aml_cam_info_s *plat_dat; +// struct aml_cam_info_s *plat_dat; int err; int ret; struct ov5640_device *t; @@ -3296,7 +3296,7 @@ static int ov5640_probe(struct i2c_client *client, #ifdef CONFIG_HAS_WAKELOCK wake_lock_init(&t->wake_lock, WAKE_LOCK_SUSPEND, "ov5640"); #endif - +/* plat_dat = (struct aml_cam_info_s *)client->dev.platform_data; if (plat_dat) { memcpy(&t->cam_info, plat_dat, sizeof(struct aml_cam_info_s)); @@ -3309,11 +3309,14 @@ static int ov5640_probe(struct i2c_client *client, kfree(t); return -1; } - +*/ t->cam_info.version = OV5640_DRIVER_VERSION; if (aml_cam_info_reg(&t->cam_info) < 0) pr_err("reg caminfo error\n"); + t->vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING + | V4L2_CAP_READWRITE; + pr_info("t->vdev = %p, video_nr = %d\n", t->vdev, video_nr); err = video_register_device(t->vdev, VFL_TYPE_VIDEO, video_nr); if (err < 0) {