I'm experimenting with it on Baytrail machine and found some issues. Along with fixing them I cleaned up a bit this. So, after applying I have the following log # modprobe atomisp [ 116.215056] atomisp: module is from the staging directory, the quality is unknown, you have been warned. [ 116.310077] atomisp-isp2 0000:00:03.0: Detected Baytrail version 15 (ISP2400) on VALLEYVIEW C0 (CR) PLATFORM [ 116.354189] atomisp-isp2 0000:00:03.0: start: 0x50000000 [ 116.376888] atomisp-isp2 0000:00:03.0: atomisp mmio base: 0000000027f9eb1f [ 116.401267] ACPI: \: failed to evaluate _DSM (0x1001) [ 116.423479] atomisp-isp2 0000:00:03.0: Failed to find EFI variable 0000:00:03.0_HpllFreq [ 116.449254] atomisp-isp2 0000:00:03.0: HpllFreq: using default (2000) [ 116.473045] atomisp-isp2 0000:00:03.0: ISP HPLL frequency base = 2000 MHz [ 116.770613] atomisp-isp2 0000:00:03.0: Probing Subdev INT33F8:00 [ 116.793750] atomisp-isp2 0000:00:03.0: Subdev INT33F8:00 successfully register [ 116.818155] atomisp-isp2 0000:00:03.0: raw_index: -1 [ 116.839924] atomisp-isp2 0000:00:03.0: SOC_INDEX: 0 [ 116.861622] atomisp-isp2 0000:00:03.0: Probing Subdev INTCF1C:00 [ 116.896885] lm3554 i2c-INTCF1C:00: Failed to power on lm3554 LED flash [ 116.920236] atomisp-isp2 0000:00:03.0: Subdev INTCF1C:00 detection fail [ 116.943649] atomisp-isp2 0000:00:03.0: detected 1 camera sensors [ 116.966177] atomisp-isp2 0000:00:03.0: atomisp_csi_lane_config: the portconfig is 2-1-0, CSI_CONTROL is 0x0002009C [ 117.009054] atomisp-isp2 0000:00:03.0: Entity type for entity ATOM ISP CSI2-port0 was not initialized! [ 117.050772] atomisp-isp2 0000:00:03.0: Entity type for entity ATOM ISP CSI2-port1 was not initialized! [ 117.050795] atomisp-isp2 0000:00:03.0: Entity type for entity ATOM ISP CSI2-port2 was not initialized! [ 117.134464] atomisp-isp2 0000:00:03.0: Entity type for entity file_input_subdev was not initialized! [ 117.176572] atomisp-isp2 0000:00:03.0: Entity type for entity tpg_subdev was not initialized! [ 117.202301] atomisp-isp2 0000:00:03.0: Entity type for entity ATOMISP_SUBDEV_0 was not initialized! [ 117.246734] atomisp-isp2 0000:00:03.0: Entity type for entity ATOMISP_SUBDEV_1 was not initialized! [ 117.290990] atomisp-isp2 0000:00:03.0: FILE_INPUT enable, camera_cnt: 1 [ 117.314607] atomisp-isp2 0000:00:03.0: TPG detected, camera_cnt: 2 [ 117.341386] atomisp-isp2 0000:00:03.0: atomisp_save_iunit_reg [ 117.363735] atomisp-isp2 0000:00:03.0: DFS target frequency=200. [ 117.386272] atomisp-isp2 0000:00:03.0: Programming DFS frequency to 200 [ 117.409426] atomisp-isp2 0000:00:03.0: waiting for ISPSSPM1 valid bit to be 0. [ 117.433323] atomisp-isp2 0000:00:03.0: waiting for ISPSSPM1 valid bit to be 0. [ 117.457139] atomisp-isp2 0000:00:03.0: atomisp_ospm_dphy_down [ 117.479800] atomisp-isp2 0000:00:03.0: binary #0 type SP: sp [ 117.502001] atomisp-isp2 0000:00:03.0: binary #1 type ISP (Normal), binary id is 0: isp_copy_var [ 117.542907] atomisp-isp2 0000:00:03.0: binary #2 type ISP (Normal), binary id is 2: isp_vf_pp_full [ 117.584666] atomisp-isp2 0000:00:03.0: binary #3 type ISP (Normal), binary id is 3: isp_vf_pp_opt [ 117.626806] atomisp-isp2 0000:00:03.0: binary #4 type ISP (Normal), binary id is 60: isp_capture_pp_var_bli [ 117.670360] atomisp-isp2 0000:00:03.0: binary #5 type ISP (Normal), binary id is 61: isp_capture_pp_ldc [ 117.713655] atomisp-isp2 0000:00:03.0: binary #6 type ISP (Normal), binary id is 5: isp_capture_pp_var [ 117.757345] atomisp-isp2 0000:00:03.0: binary #7 type ISP (Normal), binary id is 4: isp_yuv_scale_var [ 117.801371] atomisp-isp2 0000:00:03.0: binary #8 type ISP (Normal), binary id is 6: isp_preisp_var [ 117.845621] atomisp-isp2 0000:00:03.0: binary #9 type ISP (Normal), binary id is 7: isp_preisp_var_isp2 [ 117.890913] atomisp-isp2 0000:00:03.0: binary #10 type ISP (Normal), binary id is 58: isp_pre_de_var_isp2 [ 117.936321] atomisp-isp2 0000:00:03.0: binary #11 type ISP (Normal), binary id is 8: isp_gdc_var [ 117.963840] atomisp-isp2 0000:00:03.0: binary #12 type ISP (Normal), binary id is 11: isp_anr_var [ 117.991190] atomisp-isp2 0000:00:03.0: binary #13 type ISP (Normal), binary id is 12: isp_anr_var_isp2 [ 118.035988] atomisp-isp2 0000:00:03.0: binary #14 type ISP (Normal), binary id is 9: isp_postisp_var [ 118.081148] atomisp-isp2 0000:00:03.0: binary #15 type ISP (Normal), binary id is 10: isp_postisp_var_isp2 [ 118.127374] atomisp-isp2 0000:00:03.0: binary #16 type ISP (Normal), binary id is 15: isp_preview_dec [ 118.173707] atomisp-isp2 0000:00:03.0: binary #17 type ISP (Normal), binary id is 16: isp_preview_cont_bds125_isp2 [ 118.221920] atomisp-isp2 0000:00:03.0: binary #18 type ISP (Normal), binary id is 18: isp_preview_cont_bds150_isp2 [ 118.270412] atomisp-isp2 0000:00:03.0: binary #19 type ISP (Normal), binary id is 20: isp_preview_cont_bds200_isp2 [ 118.318942] atomisp-isp2 0000:00:03.0: binary #20 type ISP (Normal), binary id is 21: isp_preview_var [ 118.366572] atomisp-isp2 0000:00:03.0: binary #21 type ISP (Normal), binary id is 22: isp_preview_var_isp2 [ 118.415086] atomisp-isp2 0000:00:03.0: binary #22 type ISP (Normal), binary id is 27: isp_primary_striped [ 118.464002] atomisp-isp2 0000:00:03.0: binary #23 type ISP (Normal), binary id is 28: isp_primary_striped_isp2 [ 118.514097] atomisp-isp2 0000:00:03.0: binary #24 type ISP (Normal), binary id is 24: isp_primary_var [ 118.564053] atomisp-isp2 0000:00:03.0: binary #25 type ISP (Normal), binary id is 25: isp_primary_var_isp2 [ 118.615276] atomisp-isp2 0000:00:03.0: binary #26 type ISP (Normal), binary id is 26: isp_primary_small [ 118.666737] atomisp-isp2 0000:00:03.0: binary #27 type ISP (Normal), binary id is 29: isp_primary_8mp [ 118.718346] atomisp-isp2 0000:00:03.0: binary #28 type ISP (Normal), binary id is 30: isp_primary_14mp [ 118.770053] atomisp-isp2 0000:00:03.0: binary #29 type ISP (Normal), binary id is 31: isp_primary_16mp [ 118.821763] atomisp-isp2 0000:00:03.0: binary #30 type ISP (Normal), binary id is 33: isp_primary_isp261_stage0 [ 118.874370] atomisp-isp2 0000:00:03.0: binary #31 type ISP (Normal), binary id is 34: isp_primary_isp261_stage1 [ 118.926992] atomisp-isp2 0000:00:03.0: binary #32 type ISP (Normal), binary id is 35: isp_primary_isp261_stage2 [ 118.979792] atomisp-isp2 0000:00:03.0: binary #33 type ISP (Normal), binary id is 36: isp_primary_isp261_stage3 [ 119.032714] atomisp-isp2 0000:00:03.0: binary #34 type ISP (Normal), binary id is 37: isp_primary_isp261_stage4 [ 119.085749] atomisp-isp2 0000:00:03.0: binary #35 type ISP (Normal), binary id is 38: isp_primary_isp261_stage5 [ 119.139422] atomisp-isp2 0000:00:03.0: binary #36 type ISP (Normal), binary id is 42: isp_video_dz [ 119.192607] atomisp-isp2 0000:00:03.0: binary #37 type ISP (Normal), binary id is 44: isp_video_high [ 119.246768] atomisp-isp2 0000:00:03.0: binary #38 type ISP (Normal), binary id is 45: isp_video_nodz [ 119.301793] atomisp-isp2 0000:00:03.0: binary #39 type ISP (Normal), binary id is 46: isp_video_cont_multibds_isp2_min [ 119.359159] atomisp-isp2 0000:00:03.0: binary #40 type ISP (Normal), binary id is 47: isp_video_cont_bds_300_600_isp2_min [ 119.416880] atomisp-isp2 0000:00:03.0: binary #41 type ISP (Normal), binary id is 49: isp_video_cont_bds150_isp2_min [ 119.474102] atomisp-isp2 0000:00:03.0: binary #42 type ISP (Normal), binary id is 51: isp_video_cont_bds200_isp2_min [ 119.531365] atomisp-isp2 0000:00:03.0: binary #43 type ISP (Normal), binary id is 52: isp_video_cont_nobds_isp2_min [ 119.588595] atomisp-isp2 0000:00:03.0: binary #44 type ISP (Normal), binary id is 53: isp_video_dz_isp2_min [ 119.644981] atomisp-isp2 0000:00:03.0: binary #45 type ISP (Normal), binary id is 54: isp_video_dz_isp2 [ 119.701015] atomisp-isp2 0000:00:03.0: binary #46 type ISP (Normal), binary id is 55: isp_video_lp_isp2 Andy Shevchenko (15): media: atomisp: Replace last use of Intel MID APIs media: atomisp: move CCK endpoint address to generic header media: atomisp: Use proper APIs to find I²C client device by ACPI HID media: atomisp: don't pass struct device_driver as parameter media: atomisp: Get rid of struct pci_dev in struct atomisp_device media: atomisp: Unify pdev to be pointer to struct pci_device media: atomisp: Replace direct access to MMIO with proper helpers media: atomisp: Drop global atomisp_dev variable (easy cases) media: atomisp: make platform data more readable media: atomisp: Don't try to parse unexpected ACPI object type media: atomisp: Make pointer to PMIC client global media: atomisp: Refactor PMIC detection to a separate function. media: atomisp: Provide Gmin subdev as parameter to gmin_subdev_add() media: atomisp: Get rid of ugly and leaky ACPI handling in gmin_subdev_add() media: atomisp: Deduplicate return ret in gmin_i2c_write() arch/x86/include/asm/iosf_mbi.h | 1 + .../atomisp/include/linux/atomisp_platform.h | 1 + .../staging/media/atomisp/pci/atomisp-regs.h | 3 - .../staging/media/atomisp/pci/atomisp_acc.c | 4 +- .../staging/media/atomisp/pci/atomisp_cmd.c | 57 ++-- .../staging/media/atomisp/pci/atomisp_cmd.h | 4 +- .../media/atomisp/pci/atomisp_compat.h | 2 - .../media/atomisp/pci/atomisp_compat_css20.c | 64 ++-- .../media/atomisp/pci/atomisp_compat_css20.h | 2 +- .../staging/media/atomisp/pci/atomisp_drvfs.c | 14 +- .../staging/media/atomisp/pci/atomisp_drvfs.h | 2 +- .../media/atomisp/pci/atomisp_gmin_platform.c | 220 +++++++------- .../media/atomisp/pci/atomisp_internal.h | 2 +- .../staging/media/atomisp/pci/atomisp_ioctl.c | 19 +- .../staging/media/atomisp/pci/atomisp_v4l2.c | 277 ++++++++---------- 15 files changed, 311 insertions(+), 361 deletions(-) -- 2.27.0