Em Fri, 1 May 2020 10:54:18 +0200 Patrik Gfeller <patrik.gfeller@xxxxxxxxx> escreveu: > On 01.05.20 00:25, Mauro Carvalho Chehab wrote: > > Em Thu, 30 Apr 2020 17:09:48 +0200 > > Patrik Gfeller <patrik.gfeller@xxxxxxxxx> escreveu: > > > >> Am 4/30/2020 um 12:55 PM schrieb Mauro Carvalho Chehab: > >>> Em Thu, 30 Apr 2020 09:56:53 +0200 > >>> Patrik Gfeller<patrik.gfeller@xxxxxxxxx> escreveu: > >>> > >>>> For my first test tried to re-compile to module, without the whole > >>>> kernel. That was a mistake, as I mixed something up, probably it loaded > >>>> an old version of the module ... to be on the save side the steps I used > >>>> this time (in case we see something unexpected and for my later reference): > >>>> > >>>> $ git log --oneline > >>>> 4c922df10252 (HEAD -> atomisp, origin/atomisp) media: atomisp2: get rid > >>>> of ia_css_sc_param.h version dependency > >>>> ... > >>>> > >>>> $ make -j4 clean > >>>> $ make -j4 > >>>> $ sudo make modules_install INSTALL_MOD_STRIP=1 > >>>> $ sudo make install > >>> Please try to build from this branch: > >>> > >>> https://git.linuxtv.org/mchehab/experimental.git/log/?h=atomisp_v2 > >>> > >>> You'll need to setup a new config var there. So, please run this before > >>> make clean. So, for building it, you will do: > >>> > >>> $ ./scripts/config -e CONFIG_VIDEO_ATOMISP_ISP2401 && make -j modules_prepare > >>> $ make -j4 clean && make -j4 > >>> $ sudo make modules_install INSTALL_MOD_STRIP=1 && sudo make install > >>> > >>> This won't change the regulator detection, but it should hopefully use > >>> the ISP2401-specific code, with seems to be needed for your device. > >> I've updated to the latest source (git checkout atomisp_v2 && git pull) > >> and compiled using the instructions above. Compilation worked well, but > >> the linker had some problems (full log attached): > >> > >> ... > >> ld: > >> drivers/staging/media/atomisp/pci/css_2401_system/hive_isp_css_2401_system_generated/ia_css_isp_states.o:(.data+0x0): > >> multiple definition of `ia_css_kernel_init_state'; > >> drivers/staging/media/atomisp/pci/css_2401_csi2p_system/hive_isp_css_2401_system_csi2p_generated/ia_css_isp_states.o:(.data+0x0): > >> first defined here > >> ... > > Ok. That's because there are two "hive" variants. the building system > > should use either one of them (but not both at the same time). > > > > I didn't get the error before because I was just building a module > > (that speeds up the development). Such errors only happen on a full > > build. > > > > Fixed. > > > > As I did a git rebase (in order to have something that we could > > upstream later), you'll need to use this procedure to update: > > > > $ git remote update > > $ git reset --hard origin/atomisp_v2 > > > > There's no need to clean your last build. Just run: > > > > $ make -j4 > > > > And it should build fine this time. > > Compiled and linked :-). We get some more output this time: Good! > > [ 9.120066] kernel: videodev: Linux video capture interface: v2.00 > > [ 9.141554] kernel: atomisp_ov2680: module is from the staging > directory, the quality is unknown, you have been warned. Hmm.. your e-mailer is breaking long lines again :-( > [ 9.175421] kernel: ov2680 i2c-OVTI2680:00: gmin: initializing > atomisp module subdev data.PMIC ID 1 > [ 9.178755] kernel: ov2680 i2c-OVTI2680:00: supply V1P2A not found, > using dummy regulator > [ 9.189966] kernel: proc_thermal 0000:00:0b.0: enabling device (0000 > -> 0002) > [ 9.212704] kernel: ov2680 i2c-OVTI2680:00: supply VPROG4B not found, > using dummy regulator > [ 9.235024] kernel: ov2680 i2c-OVTI2680:00: supply Regulator1p8v not > found, using dummy regulator I'll check this. > [ 9.235057] kernel: proc_thermal 0000:00:0b.0: Creating sysfs group > for PROC_THERMAL_PCI > [ 9.238185] kernel: ov2680 i2c-OVTI2680:00: supply Regulator2p8v not > found, using dummy regulator > [ 9.337925] kernel: atomisp: module is from the staging directory, > the quality is unknown, you have been warned. > [ 9.404666] kernel: atomisp-isp2 0000:00:03.0: enabling device (0000 > -> 0002) > [ 9.408680] kernel: atomisp-isp2 0000:00:03.0: ISP HPLL frequency > base = 1600 MHz > [ 9.412197] kernel: atomisp-isp2 0000:00:03.0: Unsupported > hw_revision 0x2010 This is related to firmware load stuff. The code use those macros: #define ATOMISP_HW_REVISION_MASK 0x0000ff00 #define ATOMISP_HW_REVISION_SHIFT 8 #define ATOMISP_HW_REVISION_ISP2300 0x00 #define ATOMISP_HW_REVISION_ISP2400 0x10 #define ATOMISP_HW_REVISION_ISP2401_LEGACY 0x11 #define ATOMISP_HW_REVISION_ISP2401 0x20 #define ATOMISP_HW_STEPPING_MASK 0x000000ff #define ATOMISP_HW_STEPPING_A0 0x00 #define ATOMISP_HW_STEPPING_B0 0x10 According with the above, 0x2010 would mean ISP2401-B0. The code itself check those macros in order to load the right firmware: if (isp->media_dev.hw_revision == ((ATOMISP_HW_REVISION_ISP2401 << ATOMISP_HW_REVISION_SHIFT) | ATOMISP_HW_STEPPING_A0)) fw_path = "shisp_2401a0_v21.bin"; if (isp->media_dev.hw_revision == ((ATOMISP_HW_REVISION_ISP2401_LEGACY << ATOMISP_HW_REVISION_SHIFT) | ATOMISP_HW_STEPPING_A0)) fw_path = "shisp_2401a0_legacy_v21.bin"; if (isp->media_dev.hw_revision == ((ATOMISP_HW_REVISION_ISP2400 << ATOMISP_HW_REVISION_SHIFT) | ATOMISP_HW_STEPPING_B0)) fw_path = "shisp_2400b0_v21.bin"; if (!fw_path) { dev_err(isp->dev, "Unsupported hw_revision 0x%x\n", isp->media_dev.hw_revision); return NULL; } It sounds that we need to add: if (isp->media_dev.hw_revision == ((ATOMISP_HW_REVISION_ISP2401 << ATOMISP_HW_REVISION_SHIFT) | ATOMISP_HW_STEPPING_B0)) fw_path = "shisp_2401b0_v21.bin"; Eventually, other changes may be needed, depending on how different is this B0 revision from A0. Patch for it pushed. Please notice that it will seek for a firmware named "shisp_2401b0_v21.bin". This driver will also check if the firmware version is: "irci_ecr - master_20150911_0724" As far as I know, the firmware is linked to the driver's code. So, supporting a different firmware version will likely require changes at the driver. > [ 9.416174] kernel: atomisp-isp2: probe of 0000:00:03.0 failed with > error -2 That's because it didn't load the firmware. Thanks, Mauro