On 12/28/2017 05:03 PM, Andy Shevchenko wrote: > On Sat, 2017-12-23 at 01:31 +0100, Kristian Beilke wrote: >> On 12/21/2017 03:23 PM, Andy Shevchenko wrote: >>> On Thu, 2017-12-21 at 13:54 +0100, Kristian Beilke wrote: >>>> On Tue, Dec 19, 2017 at 10:37:01PM +0200, Andy Shevchenko wrote: >>>>> On Tue, 2017-12-19 at 14:00 +0200, Sakari Ailus wrote: >>>>>> Cc Alan and Andy. >>>>>> >>>>>> On Sat, Dec 16, 2017 at 04:50:04PM +0100, Kristian Beilke >>>>>> wrote: >>>>>>> Dear all, >>>>>>> >>>>>>> I am trying to get the cameras in a Lenovo IdeaPad Miix 320 >>>>>>> (Atom >>>>>>> x5-Z8350 BayTrail) to work. The front camera is an ov2680. >>>>>>> With >> >> CherryTrail
>>>>> WRT to the messages below it seems we have no platform data for >>>>> that >>>>> device. It needs to be added. >>>>> >> >> I tried to do exactly this. Extracted some values from >> acpidump/acpixtract and dmidecode, but unsure I nailed it. > > Can you share somewhere it (pastebin.com, gist.github.com, etc)? > https://gist.github.com/jdkbx/dabe0d000330dd2a04acf8d870e0e06f dmidecode gives me Handle 0x0002, DMI type 2, 17 bytes Base Board Information Manufacturer: LENOVO Product Name: LNVNB161216 Version: SDK0J91196WIN what I assume works as identifier in: DMI_MATCH(DMI_BOARD_NAME, "LNVNB161216") diff --git a/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c index 87216bc35648..716be4ace60e 100644 --- a/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c +++ b/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c @@ -503,6 +503,18 @@ static struct gmin_cfg_var cht_cr_vars[] = { {}, }; +static struct gmin_cfg_var miix320_vars[] = { + {"OVTI2680:00_CamType", "1"}, + {"OVTI2680:00_CsiPort", "0"}, + {"OVTI2680:00_CsiLanes", "1"}, + {"OVTI2680:00_CsiFmt", "15"}, + {"OVTI2680:00_CsiBayer", "0"}, + {"OVTI2680:00_CamClk", "1"}, + {"OVTI2680:00_Regulator1p8v", "0"}, + {"OVTI2680:00_Regulator2p8v", "0"}, + {}, +}; + static struct gmin_cfg_var mrd7_vars[] = { {"INT33F8:00_CamType", "1"}, {"INT33F8:00_CsiPort", "1"}, @@ -566,6 +578,13 @@ static const struct dmi_system_id gmin_vars[] = { }, .driver_data = cht_cr_vars, }, + { + .ident = "MIIX320", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "LNVNB161216"), + }, + .driver_data = miix320_vars, + }, { .ident = "MRD7", .matches = { >> After your set of patches I applied the CherryTrail support I found >> here >> https://github.com/croutor/atomisp2401 >> > > I have few hacks on top of this. > > First of all, take a base as atomisp branch of sakari's media_tree > repository: > > https://git.linuxtv.org/sailus/media_tree.git/ > I updated the mentioned patches by Vincent Hervieux to apply cleanly on the media_tree atomisp branch. https://github.com/jdkbx/atomisp2401 > Second, apply > > --- a/drivers/staging/media/atomisp/platform/intel- > mid/atomisp_gmin_platform.c > +++ b/drivers/staging/media/atomisp/platform/intel- > mid/atomisp_gmin_platform.c > @@ -499,6 +499,7 @@ static int gmin_v1p8_ctrl(struct v4l2_subdev > *subdev, int on) > return regulator_disable(gs->v1p8_reg); > } > > +return 0; > return -EINVAL; > } > > @@ -535,6 +536,7 @@ static int gmin_v2p8_ctrl(struct v4l2_subdev > *subdev, int on) > return regulator_disable(gs->v2p8_reg); > } > > +return 0; > return -EINVAL; > } > > --- > a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_firmware.c > +++ > b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_firmware.c > @@ -184,6 +184,7 @@ sh_css_check_firmware_version(const char *fw_data) > firmware_header = (struct firmware_header *)fw_data; > file_header = &firmware_header->file_header; > > +return true; > if (strcmp(file_header->version, release_version) != 0) { > return false; > > --- a/drivers/staging/media/atomisp/pci/atomisp2/Makefile > +++ b/drivers/staging/media/atomisp/pci/atomisp2/Makefile > @@ -348,6 +348,8 @@ DEFINES := -DHRT_HW -DHRT_ISP_CSS_CUSTOM_HOST > -DHRT_USE_VIR_ADDRS -D__HOST__ > #DEFINES += -DPUNIT_CAMERA_BUSY > #DEFINES += -DUSE_KMEM_CACHE > > +DEFINES += -DDEBUG > + > DEFINES += -DATOMISP_POSTFIX=\"css2400b0_v21\" -DISP2400B0 > > For CHT you have to change define in this file to 2401 here and line > below AFAIU (never did this). > > Third, you need to change pmic_id to be PMIC_AXP (I have longer patch > for this, that's why don't post here). Just hard code it for now in gmin > file. > I assume the given patch set does already what you suggest here, apart from the DDEBUG DEFINE. > Fourth, you have to be sure the clock rate is chosen correctly > (currently there is a bug in clk_set_rate() where parameter is clock > source index instead of frequency!). I think you need to hardcode > 19200000 there instead of gs->clock_src. I found nothing about this in the patch set, so I will do this manually. >> I am still not sure the FW gets loaded, and there is still no >> /dev/camera, but it looks promising. > > You may add a debug print in necessary function inside ->probe (in > atomisp_v4l2.c). I dont't remember if -DDEBUG will enable something like > that. Perhaps. Thats what I will do next. > You are expecting /dev/video<N> nodes. /dev/camera is usually a udev's > alias against one of /dev/video<N> nodes. As described by Alan in a later mail, this actually gives me 10 /dev/video[0-10] nodes, but none producing any images. video4 and video10 cause a kernel oops when opened. [ 425.667704] BUG: unable to handle kernel NULL pointer dereference at 00000000000000b8 [ 425.667761] IP: atomisp_g_parm+0x4a/0x80 [atomisp] [ 425.667765] PGD 0 P4D 0 [ 425.667771] Oops: 0000 [#1] SMP [ 425.667776] Modules linked in: rfcomm bnep snd_soc_sst_cht_bsw_rt5645 wmi_bmof cmdlinepart intel_spi_platform intel_spi spi_nor mtd snd_intel_sst_acpi snd_intel_sst_core snd_soc_sst_atom_hifi2_platform snd_soc_acpi snd_soc_rt5645 snd_soc_acpi_intel_match gpio_keys snd_soc_rl6231 nls_iso8859_1 intel_rapl intel_powerclamp coretemp punit_atom_debug intel_cstate iwlmvm mac80211 axp288_fuel_gauge extcon_axp288 axp288_charger axp288_adc axp20x_pek cdc_mbim cdc_wdm cdc_ncm usbnet joydev mii hid_multitouch iwlwifi input_leds btusb btrtl btbcm btintel atomisp(C) bluetooth cfg80211 mei_txe mei lpc_ich videobuf_vmalloc processor_thermal_device shpchp videobuf_core intel_soc_dts_iosf snd_seq_midi snd_seq_midi_event snd_rawmidi snd_soc_core snd_seq snd_compress ac97_bus snd_pcm_dmaengine bmc150_accel_i2c dw_dmac [ 425.667850] bmc150_accel_core dw_dmac_core industrialio_triggered_buffer snd_pcm kfifo_buf industrialio atomisp_ov2680(C) snd_seq_device v4l2_common snd_timer videodev snd media soundcore pwm_lpss_platform 8250_dw tpm_crb spi_pxa2xx_platform pwm_lpss wmi acpi_pad int3403_thermal int3400_thermal int340x_thermal_zone acpi_thermal_rel soc_button_array intel_int0002_vgpio parport_pc ppdev lp parport ip_tables x_tables hid_generic usbhid dm_crypt mmc_block i915 intel_gtt i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm video i2c_hid hid sdhci_acpi sdhci [ 425.667909] CPU: 1 PID: 2385 Comm: mplayer Tainted: G C 4.15.0-rc3 #5 [ 425.667912] Hardware name: LENOVO 80XF/LNVNB161216, BIOS 5HCN31WW 09/11/2017 [ 425.667949] RIP: 0010:atomisp_g_parm+0x4a/0x80 [atomisp] [ 425.667952] RSP: 0018:ffffaca6c2917c90 EFLAGS: 00010246 [ 425.667957] RAX: 0000000000000000 RBX: ffff9b50343aeea0 RCX: ffffffffc0a872c0 [ 425.667960] RDX: ffff9b4ff816c140 RSI: 0000000000000000 RDI: ffff9b50343aeea0 [ 425.667963] RBP: ffff9b5036075200 R08: ffffffffc0a87200 R09: ffff9b5038843300 [ 425.667965] R10: 0000000000000000 R11: 0000000000000000 R12: ffff9b5038843c80 [ 425.667968] R13: 0000000000000000 R14: 00000000000000cc R15: ffff9b50332d5e00 [ 425.667972] FS: 00007fbc6ba72440(0000) GS:ffff9b503fc80000(0000) knlGS:0000000000000000 [ 425.667976] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 425.667979] CR2: 00000000000000b8 CR3: 0000000175f4b000 CR4: 00000000001006e0 [ 425.667982] Call Trace: [ 425.668001] ? v4l_g_parm+0x54/0xd0 [videodev] [ 425.668014] ? __video_do_ioctl+0x34d/0x360 [videodev] [ 425.668022] ? path_openat+0x5bb/0x1620 [ 425.668028] ? _cond_resched+0x15/0x40 [ 425.668034] ? __kmalloc_node+0x1ea/0x2a0 [ 425.668046] ? video_ioctl2+0x20/0x20 [videodev] [ 425.668058] ? video_usercopy+0x97/0x5b0 [videodev] [ 425.668071] ? v4l2_ioctl+0xbb/0xe0 [videodev] [ 425.668076] ? do_vfs_ioctl+0xa4/0x630 [ 425.668081] ? SyS_ioctl+0x7c/0x90 [ 425.668087] ? entry_SYSCALL_64_fastpath+0x1e/0x81 [ 425.668091] Code: 01 4c 8b a0 78 09 00 00 48 8b 9b 50 02 00 00 75 2f 48 81 c3 88 0e 00 00 48 89 df e8 f1 51 d6 ec 49 8b 84 24 c0 44 00 00 48 8d 3b <8b> 80 b8 00 00 00 89 45 08 e8 78 4d d6 ec 31 c0 5b 5d 41 5c c3 [ 425.668185] RIP: atomisp_g_parm+0x4a/0x80 [atomisp] RSP: ffffaca6c2917c90 [ 425.668188] CR2: 00000000000000b8 [ 425.668237] ---[ end trace fb76f36afd55319e ]--- [ 425.672735] ------------[ cut here ]------------ [ 425.672748] rtmutex deadlock detected [ 425.672767] WARNING: CPU: 1 PID: 2385 at kernel/locking/rtmutex.h:28 rt_mutex_slowlock+0x176/0x1e0 [ 425.672771] Modules linked in: rfcomm bnep snd_soc_sst_cht_bsw_rt5645 wmi_bmof cmdlinepart intel_spi_platform intel_spi spi_nor mtd snd_intel_sst_acpi snd_intel_sst_core snd_soc_sst_atom_hifi2_platform snd_soc_acpi snd_soc_rt5645 snd_soc_acpi_intel_match gpio_keys snd_soc_rl6231 nls_iso8859_1 intel_rapl intel_powerclamp coretemp punit_atom_debug intel_cstate iwlmvm mac80211 axp288_fuel_gauge extcon_axp288 axp288_charger axp288_adc axp20x_pek cdc_mbim cdc_wdm cdc_ncm usbnet joydev mii hid_multitouch iwlwifi input_leds btusb btrtl btbcm btintel atomisp(C) bluetooth cfg80211 mei_txe mei lpc_ich videobuf_vmalloc processor_thermal_device shpchp videobuf_core intel_soc_dts_iosf snd_seq_midi snd_seq_midi_event snd_rawmidi snd_soc_core snd_seq snd_compress ac97_bus snd_pcm_dmaengine bmc150_accel_i2c dw_dmac [ 425.672845] bmc150_accel_core dw_dmac_core industrialio_triggered_buffer snd_pcm kfifo_buf industrialio atomisp_ov2680(C) snd_seq_device v4l2_common snd_timer videodev snd media soundcore pwm_lpss_platform 8250_dw tpm_crb spi_pxa2xx_platform pwm_lpss wmi acpi_pad int3403_thermal int3400_thermal int340x_thermal_zone acpi_thermal_rel soc_button_array intel_int0002_vgpio parport_pc ppdev lp parport ip_tables x_tables hid_generic usbhid dm_crypt mmc_block i915 intel_gtt i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm video i2c_hid hid sdhci_acpi sdhci [ 425.672906] CPU: 1 PID: 2385 Comm: mplayer Tainted: G D C 4.15.0-rc3 #5 [ 425.672909] Hardware name: LENOVO 80XF/LNVNB161216, BIOS 5HCN31WW 09/11/2017 [ 425.672913] RIP: 0010:rt_mutex_slowlock+0x176/0x1e0 [ 425.672916] RSP: 0018:ffffaca6c2917c88 EFLAGS: 00010046 [ 425.672921] RAX: 0000000000000000 RBX: ffff9b50343aeea0 RCX: 0000000000000006 [ 425.672924] RDX: 0000000000000007 RSI: 0000000000000002 RDI: ffff9b503fc8cdd0 [ 425.672927] RBP: ffffaca6c2917ca0 R08: 0000000000000382 R09: 000000000000000f [ 425.672930] R10: 0000000000000000 R11: ffffffffae3e0e0d R12: 0000000000000000 [ 425.672933] R13: 0000000000000002 R14: 00000000ffffffdd R15: 0000000000000000 [ 425.672937] FS: 0000000000000000(0000) GS:ffff9b503fc80000(0000) knlGS:0000000000000000 [ 425.672945] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 425.672948] CR2: 00000000000000b8 CR3: 0000000167808000 CR4: 00000000001006e0 [ 425.672951] Call Trace: [ 425.673008] ? atomisp_release+0x8f/0x520 [atomisp] [ 425.673016] ? kmem_cache_free+0x195/0x1c0 [ 425.673033] ? v4l2_release+0x30/0x80 [videodev] [ 425.673038] ? __fput+0xd8/0x210 [ 425.673046] ? task_work_run+0x89/0xb0 [ 425.673052] ? do_exit+0x2ed/0xb30 [ 425.673058] ? rewind_stack_do_exit+0x17/0x20 [ 425.673062] Code: 48 8d 75 00 48 8d 3b e8 f9 09 3f ff 41 83 fe dd 0f 85 70 ff ff ff 45 85 ff 0f 85 67 ff ff ff 48 c7 c7 99 04 bb ad e8 9a f5 39 ff <0f> ff 48 c7 44 24 10 01 00 00 00 65 48 8b 14 25 40 c4 00 00 48 [ 425.673123] ---[ end trace fb76f36afd55319f ]--- >> Am I on the right track here, or am >> I wasting my (and your) time? > > It's both: track is right and it's waste of time. > I see your point, Still it feels, as if this could go somewhere. Anyway, thanks for your explanations and the time you invested into this. Happy New Year to everyone.
smime.p7s
Description: S/MIME Cryptographic Signature