1. 11 Jun, 2020 3 commits
  2. 25 May, 2020 9 commits
    • Sakari Ailus's avatar
      media: Documentation: media: Refer to mbus format documentation from CSI-2 docs · 938b29db
      Sakari Ailus authored
      The media bus formats to be used on serial busses are documented but there
      was no reference from CSI-2 documentation. Add that now.
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Acked-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
      Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      938b29db
    • Gustavo A. R. Silva's avatar
      media: s5k5baf: Replace zero-length array with flexible-array · 142d0648
      Gustavo A. R. Silva authored
      The current codebase makes use of the zero-length array language
      extension to the C90 standard, but the preferred mechanism to declare
      variable-length types such as these ones is a flexible array member[1][2],
      introduced in C99:
      
      struct foo {
              int stuff;
              struct boo array[];
      };
      
      By making use of the mechanism above, we will get a compiler warning
      in case the flexible array does not occur last in the structure, which
      will help us prevent some kind of undefined behavior bugs from being
      inadvertently introduced[3] to the codebase from now on.
      
      Also, notice that, dynamic memory allocations won't be affected by
      this change:
      
      "Flexible array members have incomplete type, and so the sizeof operator
      may not be applied. As a quirk of the original implementation of
      zero-length arrays, sizeof evaluates to zero."[1]
      
      sizeof(flexible-array-member) triggers a warning because flexible array
      members have incomplete type[1]. There are some instances of code in
      which the sizeof operator is being incorrectly/erroneously applied to
      zero-length arrays and the result is zero. Such instances may be hiding
      some bugs. So, this work (flexible-array member conversions) will also
      help to get completely rid of those sorts of issues.
      
      This issue was found with the help of Coccinelle.
      
      [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
      [2] https://github.com/KSPP/linux/issues/21
      [3] commit 76497732 ("cxgb3/l2t: Fix undefined behaviour")
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      142d0648
    • Geert Uytterhoeven's avatar
      media: i2c: imx219: Drop <linux/clk-provider.h> and <linux/clkdev.h> · cd259939
      Geert Uytterhoeven authored
      The IMX219 camera driver is not a clock provider, but merely a clock
      consumer, and thus does not need to include <linux/clk-provider.h> and
      <linux/clkdev.h>.
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      cd259939
    • Bingbu Cao's avatar
      media: i2c: Add ov2740 image sensor driver · 866edc89
      Bingbu Cao authored
      OminiVision ov2740 is a 2 megapixels RAW RGB image sensor which can
      deliver 1920x1080@60fps frames. This driver add the support of
      vertical blanking, exposure, test pattern, digital and analog gain
      control for sensor.
      Signed-off-by: default avatarBingbu Cao <bingbu.cao@intel.com>
      Signed-off-by: default avatarShawn Tu <shawnx.tu@intel.com>
      Signed-off-by: default avatarQiu, Tianshu <tian.shu.qiu@intel.com>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      866edc89
    • Robert Foss's avatar
      media: ov8856: Implement sensor module revision identification · 96b5b11a
      Robert Foss authored
      Query the sensor for its module revision, and compare it
      to known revisions.
      
      Currently 2A and 1B revision indentification is supported.
      
      [Sakari Ailus: Wrap a line over 80, alignment, use %u for printing u32]
      Signed-off-by: default avatarRobert Foss <robert.foss@linaro.org>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      96b5b11a
    • Robert Foss's avatar
      media: ov8856: Add devicetree support · 0c2c7a1e
      Robert Foss authored
      Add match table, enable ov8856_probe() to support
      both ACPI and DT modes.
      
      ACPI and DT modes are primarily distinguished from
      by checking for ACPI mode and by having resource like
      be NULL.
      Signed-off-by: default avatarRobert Foss <robert.foss@linaro.org>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      0c2c7a1e
    • Dongchun Zhu's avatar
      media: dt-bindings: ov8856: Document YAML bindings · 932300e6
      Dongchun Zhu authored
      This patch adds documentation of device tree in YAML schema for the
      OV8856 CMOS image sensor.
      Signed-off-by: default avatarDongchun Zhu <dongchun.zhu@mediatek.com>
      Signed-off-by: default avatarRobert Foss <robert.foss@linaro.org>
      Reviewed-by: default avatarMaxime Ripard <mripard@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      932300e6
    • Dirk Nehring's avatar
      media: dvb-usb: Add Cinergy S2 PCIe Dual Port support · 528b1a1a
      Dirk Nehring authored
      Terratec Cinergy S2 PCIe Dual is a PCIe device with two tuners that
      actually contains two USB devices. The devices are visible in the
      lsusb printout.
      
      Bus 004 Device 002: ID 153b:1182 TerraTec Electronic GmbH Cinergy S2 PCIe Dual Port 2
      Bus 003 Device 002: ID 153b:1181 TerraTec Electronic GmbH Cinergy S2 PCIe Dual Port 1
      
      The devices use the Montage M88DS3000/M88TS2022 demod/tuner.
      Signed-off-by: default avatarDirk Nehring <dnehring@gmx.net>
      Signed-off-by: default avatarSean Young <sean@mess.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      528b1a1a
    • Brad Love's avatar
      media: dvbdev: Fix tuner->demod media controller link · 9f984cac
      Brad Love authored
      Fixes bug exposed by:
      
      [a3fbc2e6: media: mc-entity.c: use WARN_ON, validate link pads]
      
      The dvbdev incorrectly requests a tuner sink pad to connect to a demux
      sink pad. The media controller failure percolates back and the dvb device
      creation fails. Fix this by requesting a tuner source pad. Instead of
      forcing that pad to be index zero, check if a negative integer error
      is returned. A note is added that first source pad found is chosen.
      
      Affected bridges cx231xx and em28xx printed the below warning[s]
      when a variety of media controller dvb enabled devices were connected.
      The warning returns an error causing all affected devices to fail DVB
      device creation.
      
      [  253.138332] ------------[ cut here ]------------
      [  253.138339] WARNING: CPU: 0 PID: 1550 at drivers/media/mc/mc-entity.c:669 media_create_pad_link+0x1e0/0x200 [mc]
      [  253.138339] Modules linked in: si2168 em28xx_dvb(+) em28xx si2157 lgdt3306a cx231xx_dvb dvb_core cx231xx_alsa cx25840 cx231xx tveeprom cx2341x i2c_mux videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc ir_rc5_decoder rc_hauppauge mceusb rc_core eda
      c_mce_amd kvm nls_iso8859_1 crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd cryptd glue_helper efi_pstore wmi_bmof k10temp asix usbnet mii nouveau snd_hda_codec_realtek snd_hda_codec_generic input_leds ledtrig_audio snd_hda_codec_hdmi mxm_wmi snd_hda_in
      tel video snd_intel_dspcfg ttm snd_hda_codec drm_kms_helper snd_hda_core drm snd_hwdep snd_seq_midi snd_seq_midi_event i2c_algo_bit snd_pcm snd_rawmidi fb_sys_fops snd_seq syscopyarea sysfillrect snd_seq_device sysimgblt snd_timer snd soundcore ccp mac_hid sch_fq_codel parport_p
      c ppdev lp parport ip_tables x_tables autofs4 vfio_pci irqbypass vfio_virqfd vfio_iommu_type1 vfio hid_generic usbhid hid i2c_piix4 ahci libahci wmi gpio_amdpt
      [  253.138370]  gpio_generic
      [  253.138372] CPU: 0 PID: 1550 Comm: modprobe Tainted: G        W         5.7.0-rc2+ #181
      [  253.138373] Hardware name: MSI MS-7A39/B350M GAMING PRO (MS-7A39), BIOS 2.G0 04/27/2018
      [  253.138376] RIP: 0010:media_create_pad_link+0x1e0/0x200 [mc]
      [  253.138378] Code: 26 fd ff ff 44 8b 4d d0 eb d9 0f 0b 41 b9 ea ff ff ff 44 89 c8 c3 0f 0b 41 b9 ea ff ff ff eb f2 0f 0b 41 b9 ea ff ff ff eb e8 <0f> 0b 41 b9 ea ff ff ff eb af 0f 0b 41 b9 ea ff ff ff eb a5 66 90
      [  253.138379] RSP: 0018:ffffb9ecc0ee7a78 EFLAGS: 00010246
      [  253.138380] RAX: ffff943f706c99d8 RBX: 0000000000000000 RCX: 0000000000000000
      [  253.138381] RDX: ffff943f613e0180 RSI: 0000000000000000 RDI: ffff943f706c9958
      [  253.138381] RBP: ffffb9ecc0ee7ab0 R08: 0000000000000001 R09: ffff943f613e0180
      [  253.138382] R10: ffff943f613e0180 R11: ffff943f706c9400 R12: 0000000000000000
      [  253.138383] R13: 0000000000000001 R14: ffff943f706c9958 R15: 0000000000000001
      [  253.138384] FS:  00007f3cd29ba540(0000) GS:ffff943f8ec00000(0000) knlGS:0000000000000000
      [  253.138385] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  253.138385] CR2: 000055f7de0ca830 CR3: 00000003dd208000 CR4: 00000000003406f0
      [  253.138386] Call Trace:
      [  253.138392]  media_create_pad_links+0x104/0x1b0 [mc]
      [  253.138397]  dvb_create_media_graph+0x350/0x5f0 [dvb_core]
      [  253.138402]  em28xx_dvb_init+0x5ea/0x2600 [em28xx_dvb]
      [  253.138408]  em28xx_register_extension+0x63/0xc0 [em28xx]
      [  253.138410]  ? 0xffffffffc039c000
      [  253.138412]  em28xx_dvb_register+0x15/0x1000 [em28xx_dvb]
      [  253.138416]  do_one_initcall+0x71/0x250
      [  253.138418]  ? do_init_module+0x27/0x22e
      [  253.138421]  ? _cond_resched+0x1a/0x50
      [  253.138423]  ? kmem_cache_alloc_trace+0x1ec/0x270
      [  253.138425]  ? __vunmap+0x1e3/0x240
      [  253.138427]  do_init_module+0x5f/0x22e
      [  253.138430]  load_module+0x2525/0x2d40
      [  253.138436]  __do_sys_finit_module+0xe5/0x120
      [  253.138438]  ? __do_sys_finit_module+0xe5/0x120
      [  253.138442]  __x64_sys_finit_module+0x1a/0x20
      [  253.138443]  do_syscall_64+0x57/0x1b0
      [  253.138445]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  253.138446] RIP: 0033:0x7f3cd24dc839
      [  253.138448] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 1f f6 2c 00 f7 d8 64 89 01 48
      [  253.138449] RSP: 002b:00007ffe4fc514d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
      [  253.138450] RAX: ffffffffffffffda RBX: 000055a9237f63f0 RCX: 00007f3cd24dc839
      [  253.138451] RDX: 0000000000000000 RSI: 000055a922c3ad2e RDI: 0000000000000000
      [  253.138451] RBP: 000055a922c3ad2e R08: 0000000000000000 R09: 0000000000000000
      [  253.138452] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      [  253.138453] R13: 000055a9237f5550 R14: 0000000000040000 R15: 000055a9237f63f0
      [  253.138456] ---[ end trace a60f19c54aa96ec4 ]---
      
      [  234.915628] ------------[ cut here ]------------
      [  234.915640] WARNING: CPU: 0 PID: 1502 at drivers/media/mc/mc-entity.c:669 media_create_pad_link+0x1e0/0x200 [mc]
      [  234.915641] Modules linked in: si2157 lgdt3306a cx231xx_dvb(+) dvb_core cx231xx_alsa cx25840 cx231xx tveeprom cx2341x i2c_mux videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc ir_rc5_decoder rc_hauppauge mceusb rc_core edac_mce_amd kvm nls_iso8859
      _1 crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd cryptd glue_helper efi_pstore wmi_bmof k10temp asix usbnet mii nouveau snd_hda_codec_realtek snd_hda_codec_generic input_leds ledtrig_audio snd_hda_codec_hdmi mxm_wmi snd_hda_intel video snd_intel_dspcf
      g ttm snd_hda_codec drm_kms_helper snd_hda_core drm snd_hwdep snd_seq_midi snd_seq_midi_event i2c_algo_bit snd_pcm snd_rawmidi fb_sys_fops snd_seq syscopyarea sysfillrect snd_seq_device sysimgblt snd_timer snd soundcore ccp mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tab
      les x_tables autofs4 vfio_pci irqbypass vfio_virqfd vfio_iommu_type1 vfio hid_generic usbhid hid i2c_piix4 ahci libahci wmi gpio_amdpt gpio_generic
      [  234.915700] CPU: 0 PID: 1502 Comm: modprobe Not tainted 5.7.0-rc2+ #181
      [  234.915702] Hardware name: MSI MS-7A39/B350M GAMING PRO (MS-7A39), BIOS 2.G0 04/27/2018
      [  234.915709] RIP: 0010:media_create_pad_link+0x1e0/0x200 [mc]
      [  234.915712] Code: 26 fd ff ff 44 8b 4d d0 eb d9 0f 0b 41 b9 ea ff ff ff 44 89 c8 c3 0f 0b 41 b9 ea ff ff ff eb f2 0f 0b 41 b9 ea ff ff ff eb e8 <0f> 0b 41 b9 ea ff ff ff eb af 0f 0b 41 b9 ea ff ff ff eb a5 66 90
      [  234.915714] RSP: 0018:ffffb9ecc1b6fa50 EFLAGS: 00010246
      [  234.915717] RAX: ffff943f8c94a9d8 RBX: 0000000000000000 RCX: 0000000000000000
      [  234.915719] RDX: ffff943f613e0900 RSI: 0000000000000000 RDI: ffff943f8c94a958
      [  234.915721] RBP: ffffb9ecc1b6fa88 R08: 0000000000000001 R09: ffff943f613e0900
      [  234.915723] R10: ffff943f613e0900 R11: ffff943f6b590c00 R12: 0000000000000000
      [  234.915724] R13: 0000000000000001 R14: ffff943f8c94a958 R15: 0000000000000001
      [  234.915727] FS:  00007f4ca3646540(0000) GS:ffff943f8ec00000(0000) knlGS:0000000000000000
      [  234.915729] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  234.915731] CR2: 00007fff7a53ba18 CR3: 00000003da614000 CR4: 00000000003406f0
      [  234.915733] Call Trace:
      [  234.915745]  media_create_pad_links+0x104/0x1b0 [mc]
      [  234.915756]  dvb_create_media_graph+0x350/0x5f0 [dvb_core]
      [  234.915766]  dvb_init.part.4+0x691/0x1360 [cx231xx_dvb]
      [  234.915780]  dvb_init+0x1a/0x20 [cx231xx_dvb]
      [  234.915787]  cx231xx_register_extension+0x71/0xa0 [cx231xx]
      [  234.915791]  ? 0xffffffffc042f000
      [  234.915796]  cx231xx_dvb_register+0x15/0x1000 [cx231xx_dvb]
      [  234.915802]  do_one_initcall+0x71/0x250
      [  234.915807]  ? do_init_module+0x27/0x22e
      [  234.915811]  ? _cond_resched+0x1a/0x50
      [  234.915816]  ? kmem_cache_alloc_trace+0x1ec/0x270
      [  234.915820]  ? __vunmap+0x1e3/0x240
      [  234.915826]  do_init_module+0x5f/0x22e
      [  234.915831]  load_module+0x2525/0x2d40
      [  234.915848]  __do_sys_finit_module+0xe5/0x120
      [  234.915850]  ? __do_sys_finit_module+0xe5/0x120
      [  234.915862]  __x64_sys_finit_module+0x1a/0x20
      [  234.915865]  do_syscall_64+0x57/0x1b0
      [  234.915870]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  234.915872] RIP: 0033:0x7f4ca3168839
      [  234.915876] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 1f f6 2c 00 f7 d8 64 89 01 48
      [  234.915878] RSP: 002b:00007ffcea3db3b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
      [  234.915881] RAX: ffffffffffffffda RBX: 000055af22c29340 RCX: 00007f4ca3168839
      [  234.915882] RDX: 0000000000000000 RSI: 000055af22c38390 RDI: 0000000000000001
      [  234.915884] RBP: 000055af22c38390 R08: 0000000000000000 R09: 0000000000000000
      [  234.915885] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
      [  234.915887] R13: 000055af22c29060 R14: 0000000000040000 R15: 0000000000000000
      [  234.915896] ---[ end trace a60f19c54aa96ec3 ]---
      Signed-off-by: default avatarBrad Love <brad@nextdimension.cc>
      Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarSean Young <sean@mess.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      9f984cac
  3. 20 May, 2020 28 commits
    • Helen Koike's avatar
      media: dt-bindings: phy: phy-rockchip-dphy-rx0: move rockchip dphy rx0 bindings out of staging · 960b2dee
      Helen Koike authored
      Move phy-rockchip-dphy-rx0 bindings to Documentation/devicetree/bindings/phy
      
      Verified with:
      make ARCH=arm64 dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/phy/rockchip-mipi-dphy-rx0.yaml
      Signed-off-by: default avatarHelen Koike <helen.koike@collabora.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      960b2dee
    • Helen Koike's avatar
      media: staging: dt-bindings: phy-rockchip-dphy-rx0: remove non-used reg property · 00994f0c
      Helen Koike authored
      reg property is not used in Rockchip MIPI DPHY RX0 bindings, thus remove
      it.
      Suggested-by: default avatarJohan Jonker <jbx6244@gmail.com>
      Signed-off-by: default avatarHelen Koike <helen.koike@collabora.com>
      Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      00994f0c
    • Mauro Carvalho Chehab's avatar
      media: atomisp: unify the version for isp2401 a0 and b0 versions · 8c866426
      Mauro Carvalho Chehab authored
      Based on Yocto Aero's repository, the file name for the isp2401
      is the same for the B0 release.
      
      So, unify it at the driver.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      8c866426
    • Mauro Carvalho Chehab's avatar
      media: atomisp: update TODO with the current data · 64562679
      Mauro Carvalho Chehab authored
      The TODO list doesn't reflect the current status of the driver.
      
      Update it.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      64562679
    • Mauro Carvalho Chehab's avatar
      media: atomisp: adjust some code at sh_css that could be broken · 27333dad
      Mauro Carvalho Chehab authored
      When checking sh_css.c against the Yocto Aero's version, it can
      be noticed that some isp2401 dependencies may have been taken
      wrongly.
      
      Change the code to work like the Yocto Aero, as this driver
      was tested in the past with an ISP2401 device.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      27333dad
    • Mauro Carvalho Chehab's avatar
      media: atomisp: don't produce errs for ignored IRQs · 58d6ccc2
      Mauro Carvalho Chehab authored
      Depending on the ISP-specific HAS_NO_INPUT_FORMATTER macro,
      some IRQs will be ignored by the driver. Yet, those keep
      happening, as reported by this debug print:
      
      	[   61.620746] atomisp-isp2 0000:00:03.0: atomisp_css_irq_enable: css irq info 0x00000004: disable.
      
      Causing this warning:
      	[   61.620749] atomisp-isp2 0000:00:03.0: atomisp_css_irq_enable:Invalid irq info.
      
      Well, if this is a normal situation, just ignore it without
      warnings.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      58d6ccc2
    • Mauro Carvalho Chehab's avatar
      media: atomisp: print IRQ when debugging · cf3cd3b0
      Mauro Carvalho Chehab authored
      Add a debug printk to show what IRQ is popping up.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      cf3cd3b0
    • Mauro Carvalho Chehab's avatar
      media: atomisp: isp_mmu: don't use kmem_cache · 1985e938
      Mauro Carvalho Chehab authored
      Instead of using it only if system memory is below 2GB,
      don't use it at all. The problem is that the code there is not
      compatible anymore with modern Kernels:
      
      [  179.552797] virt_to_cache: Object is not a Slab page!
      [  179.552821] WARNING: CPU: 0 PID: 1414 at mm/slab.h:475 cache_from_obj+0xab/0xf0
      [  179.552824] Modules linked in: ccm(E) nft_fib_inet(E) nft_fib_ipv4(E) nft_fib_ipv6(E) nft_fib(E) nft_reject_inet(E) nf_reject_ipv4(E) nf_reject_ipv6(E) nft_reject(E) nft_ct(E) nft_chain_nat(E) ip6table_nat(E) ip6table_mangle(E) ip6table_raw(E) ip6table_security(E) iptable_nat(E) nf_nat(E) nf_conntrack(E) nf_defrag_ipv6(E) libcrc32c(E) nf_defrag_ipv4(E) iptable_mangle(E) iptable_raw(E) iptable_security(E) ip_set(E) nf_tables(E) nfnetlink(E) ip6table_filter(E) ip6_tables(E) iptable_filter(E) cmac(E) bnep(E) sunrpc(E) vfat(E) fat(E) mei_hdcp(E) snd_soc_sst_cht_bsw_rt5645(E) gpio_keys(E) intel_rapl_msr(E) intel_powerclamp(E) coretemp(E) kvm_intel(E) kvm(E) irqbypass(E) crct10dif_pclmul(E) crc32_pclmul(E) asus_nb_wmi(E) ath10k_pci(E) ghash_clmulni_intel(E) ath10k_core(E) intel_cstate(E) wdat_wdt(E) pcspkr(E) ath(E) mac80211(E) intel_chtdc_ti_pwrbtn(E) joydev(E) btusb(E) btrtl(E) btbcm(E) btintel(E) libarc4(E) bluetooth(E) cfg80211(E) ecdh_generic(E) ecc(E) mei_txe(E) mei(E) lpc_ich(E)
      [  179.552887]  hid_sensor_accel_3d(E) hid_sensor_gyro_3d(E) hid_sensor_trigger(E) hid_sensor_iio_common(E) industrialio_triggered_buffer(E) kfifo_buf(E) industrialio(E) atomisp_ov2680(CE) snd_soc_rt5645(E) snd_intel_sst_acpi(E) snd_soc_rl6231(E) snd_intel_sst_core(E) snd_soc_sst_atom_hifi2_platform(E) intel_hid(E) snd_soc_acpi_intel_match(E) spi_pxa2xx_platform(E) snd_soc_acpi(E) snd_soc_core(E) snd_compress(E) dw_dmac(E) snd_hdmi_lpe_audio(E) int3400_thermal(E) int3406_thermal(E) snd_seq(E) acpi_thermal_rel(E) int3403_thermal(E) atomisp(CE) snd_seq_device(E) snd_pcm(E) intel_int0002_vgpio(E) soc_button_array(E) acpi_pad(E) intel_xhci_usb_role_switch(E) snd_timer(E) videobuf_vmalloc(E) videobuf_core(E) snd(E) atomisp_gmin_platform(CE) soundcore(E) videodev(E) processor_thermal_device(E) intel_soc_dts_iosf(E) mc(E) intel_rapl_common(E) int340x_thermal_zone(E) ip_tables(E) hid_sensor_hub(E) intel_ishtp_loader(E) intel_ishtp_hid(E) mmc_block(E) hid_multitouch(E) crc32c_intel(E) i915(E)
      [  179.552936]  hid_asus(E) i2c_algo_bit(E) asus_wmi(E) sparse_keymap(E) rfkill(E) drm_kms_helper(E) intel_ish_ipc(E) intel_ishtp(E) drm(E) wmi(E) video(E) i2c_hid(E) pwm_lpss_platform(E) pwm_lpss(E) sdhci_acpi(E) sdhci(E) mmc_core(E) fuse(E)
      [  179.552961] CPU: 0 PID: 1414 Comm: v4l2grab Tainted: G         C  EL    5.7.0-rc2+ #42
      [  179.552963] Hardware name: ASUSTeK COMPUTER INC. T101HA/T101HA, BIOS T101HA.306 04/23/2019
      [  179.552968] RIP: 0010:cache_from_obj+0xab/0xf0
      [  179.552973] Code: c3 31 c0 80 3d 1c 38 72 01 00 75 f0 48 c7 c6 20 12 06 9f 48 c7 c7 10 f3 37 9f 48 89 04 24 c6 05 01 38 72 01 01 e8 2c 99 e0 ff <0f> 0b 48 8b 04 24 eb ca 48 8b 57 58 48 8b 48 58 48 c7 c6 30 12 06
      [  179.552976] RSP: 0018:ffffaf1f00c3fae0 EFLAGS: 00010282
      [  179.552980] RAX: 0000000000000029 RBX: 00000000000003ff RCX: 0000000000000007
      [  179.552983] RDX: 00000000fffffff8 RSI: 0000000000000082 RDI: ffff9cb6bbc19cc0
      [  179.552985] RBP: 0000000001000000 R08: 00000000000005a4 R09: ffffaf1f00c3f970
      [  179.552988] R10: 0000000000000005 R11: 0000000000000000 R12: ffffffffc0713da0
      [  179.552991] R13: ffff9cb5a7bb1000 R14: 0000000001000000 R15: ffff9cb5a7bb1000
      [  179.552995] FS:  0000000000000000(0000) GS:ffff9cb6bbc00000(0000) knlGS:0000000000000000
      [  179.552998] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  179.553000] CR2: 00007fe780544400 CR3: 000000002480a000 CR4: 00000000001006f0
      [  179.553003] Call Trace:
      [  179.553015]  kmem_cache_free+0x19/0x180
      [  179.553070]  mmu_l2_unmap+0xd1/0x100 [atomisp]
      [  179.553113]  ? __bo_merge+0x8f/0xa0 [atomisp]
      [  179.553155]  mmu_unmap+0xd0/0xf0 [atomisp]
      [  179.553198]  hmm_bo_unbind+0x62/0xb0 [atomisp]
      [  179.553240]  hmm_free+0x44/0x60 [atomisp]
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      1985e938
    • Mauro Carvalho Chehab's avatar
      media: atomisp: add a notice about possible leak resources · c03496b3
      Mauro Carvalho Chehab authored
      Calling acpi_bus_get_device() may end allocating resources that
      aren't freed. So, add a notice about that, as, if those drivers
      get out of staging, we may need some changes.
      
      Fixes: 0d64e942 ("media: atomisp: Add some ACPI detection info")
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      c03496b3
    • Mauro Carvalho Chehab's avatar
      media: atomisp: disable the dynamic and reserved pools · 814634b8
      Mauro Carvalho Chehab authored
      The memory management code for atomisp is complex: it has 2
      extra pools (plus some ION-specific code).
      
      The code for those extra pools are complex, and there are even
      some parts of code over there that were forked from some
      mm/ code, probably from Kernel 3.10.
      
      Let's just use a single one, in order to make the driver
      simpler.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      814634b8
    • Mauro Carvalho Chehab's avatar
      media: atomisp: turn on camera before setting it · eda1310b
      Mauro Carvalho Chehab authored
      Camera cannot be set on power off mode.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      eda1310b
    • Mauro Carvalho Chehab's avatar
      media: atomisp: simplify ov2680 array write logic · 1bc075cb
      Mauro Carvalho Chehab authored
      Instead of trying to send multiple bytes at the same time,
      just go one by one, like the upstream driver does.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      1bc075cb
    • Mauro Carvalho Chehab's avatar
      media: atomisp-ov2680: get rid of the type field · b0ac2383
      Mauro Carvalho Chehab authored
      This isn't really used, so get rid, in order to make the code
      simpler.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      b0ac2383
    • Mauro Carvalho Chehab's avatar
      media: atomisp: use read/write routines from mainstream · 4f78f084
      Mauro Carvalho Chehab authored
      There is an ov2680 driver mainstream. Use the read/write
      routines from it, as the ones inside this driver are
      generating some errors:
      
      	ov2680 i2c-OVTI2680:00: ov2680_i2c_write: i2c write reg=0x3086, value 0x00, error -121
      
      Maybe the code that changes from/to BE are not right.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      4f78f084
    • Mauro Carvalho Chehab's avatar
      media: atomisp: ov2680: improve debug messages · 5589ea07
      Mauro Carvalho Chehab authored
      Change some code at ov2680 for it to better report what's
      happening there at sensor's level.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      5589ea07
    • Mauro Carvalho Chehab's avatar
      media: atomisp: change the code to properly wait for sensor · 1d6e5c30
      Mauro Carvalho Chehab authored
      The sensor should finish its init before atomisp driver, as
      otherwise the atomisp driver won't be able to talk with it.
      
      So, we need to turn atomisp_gmin_platform into a module
      again, for it to not depend on atomisp driver to finish
      probing, and add some delay at atomisp to let the sensor
      driver to finish probing.
      
      Yeah, this is hacky. The real solution here would be to use
      the async framework, but for now, our goal is to make the
      driver to work. So, let's postpone such change to be done
      later.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      1d6e5c30
    • Mauro Carvalho Chehab's avatar
      media: atomisp: keep the ISP powered on when setting it · 95d1f398
      Mauro Carvalho Chehab authored
      The current code causes ISP2401 to power down and never return
      back to live, causing the driver to crash.
      
      Fix it by commenting out the bad code. It should be noticed that
      the Yocto Aero code has something similar to it.
      
      Maybe the issue is related to an ISP bug (or maybe PM is
      controlled on a different way for this hardware).
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      95d1f398
    • Mauro Carvalho Chehab's avatar
      media: atomisp: fix the value for CamClk on Asus T101HA · 39c91e18
      Mauro Carvalho Chehab authored
      The value returned by BIOS is 1. Fix it at the driver,
      as it won't read this from EFI.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      39c91e18
    • Mauro Carvalho Chehab's avatar
      media: atomisp: fix a slab error due to a wrong free · 7f98b894
      Mauro Carvalho Chehab authored
      The mmu mapping logic uses a different logic depending on the
      RAM size: if it is lower than 2GB, it uses kmem_cache_zalloc(),
      but if memory is bigger than that, it uses its own way to
      allocate memory.
      
      Yet, when freeing, it uses kmem_cache_free() for any cases.
      
      On recent Kernels, slab tracks the memory allocated on it,
      with causes those warnings:
      
       virt_to_cache: Object is not a Slab page!
       WARNING: CPU: 0 PID: 758 at mm/slab.h:475 cache_from_obj+0xab/0xf0
       Modules linked in: snd_soc_sst_cht_bsw_rt5645(E) mei_hdcp(E) gpio_keys(E) intel_rapl_msr(E) intel_powerclamp(E) coretemp(E) kvm_intel(E) kvm(E) irqbypass(E) crct10dif_pclmul(E) crc32_pclmul(E) ghash_clmulni_intel(E) atomisp_ov2680(CE) intel_cstate(E) asus_nb_wmi(E) wdat_wdt(E) pcspkr(E) ath10k_pci(E) ath10k_core(E) intel_chtdc_ti_pwrbtn(E) ath(E) mac80211(E) btusb(E) joydev(E) btrtl(E) btbcm(E) btintel(E) bluetooth(E) libarc4(E) ecdh_generic(E) cfg80211(E) ecc(E) hid_sensor_gyro_3d(E) hid_sensor_accel_3d(E) hid_sensor_trigger(E) hid_sensor_iio_common(E) industrialio_triggered_buffer(E) kfifo_buf(E) industrialio(E) atomisp(CE) videobuf_vmalloc(E) videobuf_core(E) videodev(E) mc(E) snd_soc_rt5645(E) snd_soc_rl6231(E) snd_intel_sst_acpi(E) snd_intel_sst_core(E) snd_soc_sst_atom_hifi2_platform(E) snd_soc_acpi_intel_match(E) intel_hid(E) spi_pxa2xx_platform(E) snd_soc_acpi(E) snd_soc_core(E) snd_compress(E) dw_dmac(E) intel_xhci_usb_role_switch(E) int3406_thermal(E)
        snd_hdmi_lpe_audio(E) int3403_thermal(E) int3400_thermal(E) acpi_thermal_rel(E) snd_seq(E) intel_int0002_vgpio(E) soc_button_array(E) snd_seq_device(E) acpi_pad(E) snd_pcm(E) snd_timer(E) snd(E) soundcore(E) lpc_ich(E) mei_txe(E) mei(E) processor_thermal_device(E) intel_soc_dts_iosf(E) intel_rapl_common(E) int340x_thermal_zone(E) ip_tables(E) hid_sensor_hub(E) intel_ishtp_loader(E) intel_ishtp_hid(E) mmc_block(E) hid_multitouch(E) crc32c_intel(E) i915(E) i2c_algo_bit(E) drm_kms_helper(E) hid_asus(E) asus_wmi(E) sparse_keymap(E) rfkill(E) drm(E) intel_ish_ipc(E) intel_ishtp(E) wmi(E) video(E) i2c_hid(E) sdhci_acpi(E) sdhci(E) mmc_core(E) pwm_lpss_platform(E) pwm_lpss(E) fuse(E)
       CPU: 0 PID: 758 Comm: v4l_id Tainted: G         C  E     5.7.0-rc2+ #40
       Hardware name: ASUSTeK COMPUTER INC. T101HA/T101HA, BIOS T101HA.306 04/23/2019
       RIP: 0010:cache_from_obj+0xab/0xf0
       Code: c3 31 c0 80 3d 1c 38 72 01 00 75 f0 48 c7 c6 20 12 06 b5 48 c7 c7 10 f3 37 b5 48 89 04 24 c6 05 01 38 72 01 01 e8 2c 99 e0 ff <0f> 0b 48 8b 04 24 eb ca 48 8b 57 58 48 8b 48 58 48 c7 c6 30 12 06
       RSP: 0018:ffffb0a4c07cfb10 EFLAGS: 00010282
       RAX: 0000000000000029 RBX: 0000000000000048 RCX: 0000000000000000
       RDX: ffffa004fbca5b80 RSI: ffffa004fbc19cc8 RDI: ffffa004fbc19cc8
       RBP: 0000000000c49000 R08: 00000000000004f7 R09: 0000000000000001
       R10: 0000000000aaaaaa R11: ffffffffb50e0600 R12: ffffffffc0be0a00
       R13: ffffa003f2448000 R14: 0000000000c49000 R15: ffffa003f2448000
       FS:  00007f9060c9cb80(0000) GS:ffffa004fbc00000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000559fc55b8000 CR3: 0000000165b02000 CR4: 00000000001006f0
       Call Trace:
        kmem_cache_free+0x19/0x180
        mmu_l2_unmap+0xd1/0x100 [atomisp]
        mmu_unmap+0xd0/0xf0 [atomisp]
        hmm_bo_unbind+0x62/0xb0 [atomisp]
        hmm_free+0x44/0x60 [atomisp]
        ia_css_spctrl_unload_fw+0x30/0x50 [atomisp]
        ia_css_uninit+0x3a/0x90 [atomisp]
        atomisp_open+0x50b/0x5c0 [atomisp]
        v4l2_open+0x85/0xf0 [videodev]
        chrdev_open+0xdd/0x210
        ? cdev_device_add+0xc0/0xc0
        do_dentry_open+0x13a/0x380
        path_openat+0xa9a/0xfe0
        do_filp_open+0x75/0x100
        ? __check_object_size+0x12e/0x13c
        ? __alloc_fd+0x44/0x150
        do_sys_openat2+0x8a/0x130
        __x64_sys_openat+0x46/0x70
        do_syscall_64+0x5b/0xf0
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
      
      Solve it by calling free_page() directly
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      7f98b894
    • Mauro Carvalho Chehab's avatar
      media: atomisp: get rid of __bo_alloc() macro · 5f1e9dd5
      Mauro Carvalho Chehab authored
      Simplify the hmm_bo a little bit by removing this
      macro. This will avoid printing twice errors when
      allocations happen.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      5f1e9dd5
    • Mauro Carvalho Chehab's avatar
      media: atomisp: get rid of spmem_dump.c · 983e5aca
      Mauro Carvalho Chehab authored
      Those files seem to be firmware-dependent, probably being used
      by some debug interface.
      
      Well, their contents are not really used by atomisp, so let's
      just send them to the trash can, as it shouldn't have any
      usage upstream.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      983e5aca
    • Mauro Carvalho Chehab's avatar
      media: atomisp: fix an inverted logic · 3117ddda
      Mauro Carvalho Chehab authored
      When changing the IFs to select isp2401 at runtime, one of
      the conditions ended by being written wrong.
      
      Code double-checked on both Yocto Aero's driver version and
      against the previous code.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      3117ddda
    • Mauro Carvalho Chehab's avatar
      media: atomisp: remove a misplaced #endif · 1351ea6b
      Mauro Carvalho Chehab authored
      There is an endif in the middle of a comment at
      ia_css_xnr3.host.c. Remove it.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      1351ea6b
    • Mauro Carvalho Chehab's avatar
      media: atomisp: simplify the power down/up code · 0f441fd7
      Mauro Carvalho Chehab authored
      Use the version from intel_atomisp2_pm.c for power up/down,
      removing some code duplication and using just one kAPI call
      for modifying the ISPSSPM0 register.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      0f441fd7
    • Mauro Carvalho Chehab's avatar
      media: atomisp: use pcim_enable_device() again · a27b5811
      Mauro Carvalho Chehab authored
      Changing to pci_enable_device() didn't produce the expected
      result. It could also eventually led to problems when driver
      is removed, due to object lifetime issues. So, let's just
      return to the previous behavior.
      Suggested-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      a27b5811
    • Mauro Carvalho Chehab's avatar
      media: atomisp: spctrl: be sure to zero .code_addr after free · 4877b19e
      Mauro Carvalho Chehab authored
      We need that to avoid trying to double-free the driver.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      4877b19e
    • Mauro Carvalho Chehab's avatar
      media: atomisp: add support for different PMIC configurations · b4dc4e13
      Mauro Carvalho Chehab authored
      This patch required lots of research and work. The existing
      atomisp driver at staging assumed that all Intel PMIC would
      be using regulators, but upstream didn't follow it. Instead,
      the intel_pmic.c driver added a hack, instead of using i2c_transfer,
      it writes I2C values directly via regmapped registers.
      
      Oh, well... At least, it provided a common API for doing that.
      
      The PMIC settings used here came from the driver at the
      yocto Aero distribution:
      
      	https://download.01.org/aero/deb/pool/main/l/linux-4.4.76-aero-1.3/
      
      The logic itself was re-written, in order to use the I2C address
      detected by the probing part.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      b4dc4e13
    • Mauro Carvalho Chehab's avatar
      media: atomisp: move atomisp_gmin_platform.c to pci/ dir · 0741bf66
      Mauro Carvalho Chehab authored
      The atomisp_gmin_platform.c is not a platform driver anymore,
      but it is, instead, part of the atomisp driver.
      
      Move it to be together with the driver. As a bonus, as the
      atomisp i2c drivers depends on its contents, probing them
      should load automatically the atomisp core. This should
      likely avoid some possible race conditions.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      0741bf66