ISP: G12B & SM1 Bringup mipi camera of SM1-runtime [1/1]

PD#SWPL-108141

Problem:
5.15 no camera driver

Solution:
porting camera driver to kernel-5.15

Verify:
ok

Change-Id: Icb16e226fd2a6e091e098d0d34fb72fa6862be27
Signed-off-by: junwei.ma <junwei.ma@amlogic.com>
This commit is contained in:
junwei.ma
2023-03-08 15:15:52 +08:00
committed by yao zhang1
parent 6fcef002dc
commit de011cd420
6 changed files with 24 additions and 15 deletions
@@ -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 {
@@ -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
-2
View File
@@ -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
+2 -1
View File
@@ -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
# $(MODULE_CAMERA_NAME)-$(CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640) += ov5640.o
+1
View File
@@ -1814,6 +1814,7 @@ int __init aml_cams_prober_init(void)
#ifdef CONFIG_AMLOGIC_VIDEO_CAPTURE_OV5640
ov5640_i2c_driver_init();
#endif
return 0;
}
+6 -3
View File
@@ -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) {