Comment 1 by Nikolaus Schaller, Aug 1, 2013
The main question is what we should specify for con_id and dev_id: 1349 static struct isp_platform_data gta04_isp_platform_data = { 1350 .subdevs = gta04_camera_subdevs_group, 1351 .xclks[0] = { /* XCLK_A */ 1352 #warning what names/ids should we provide here? 1353 .con_id = "cam_xclka?", 1354 .dev_id = "cam_xclka?", 1355 }, 1356 /* .set_constraints = & void (*set_constraints)(struct isp_device *isp, bool enable) */ 1357 };
Comment 2 by Nikolaus Schaller, Aug 1, 2013
Some research indicates that we have to specify something like cam_mclk cam_clkdm
Comment 3 by Nikolaus Schaller, Aug 3, 2013
Laurent Pinchard gave me a link to a patch for the BeagleBoard: http://git.linuxtv.org/pinchartl/media.git/commitdiff/eaae9b6eec327f4 af7a80a2e8ccde82139621688 And it appears that we have to fix the ov9655 driver as well to handle some clock and regulator directly.
Comment 4 by Nikolaus Schaller, Aug 3, 2013
Ok, appears to work now. There is still some issue with the regulators (which are defined in the board file and also registered - maybe twice) I see on dmesg: [ 0.205444] reg-virt-consumer reg-virt-consumer.1: Failed to obtain supply 'vaux1': -517 [ 0.205474] platform reg-virt-consumer.1: Driver reg-virt-consumer requests probe deferral [ 0.205535] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 0.205535] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 0.205596] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 0.205596] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral [ 0.206146] platform omap_uart.0: Driver omap_uart requests probe deferral and [ 3.645111] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 3.653625] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 3.662475] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 3.671020] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral [ 3.680053] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 88) is a OMAP UART0 [ 3.687896] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 3.696411] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 3.705169] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 3.713623] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral [ 3.722625] UBI: default fastmap pool size: 200 [ 3.727478] UBI: default fastmap WL pool size: 25 [ 3.732421] UBI: attaching mtd4 to ubi0 [ 4.124389] bq27000-battery bq27000-battery: support ver. 1.2.0 enabled [ 4.344299] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 4.364135] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 4.384155] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 4.392639] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral and [ 7.322174] media: Linux media interface: v0.10 [ 7.397277] Linux video capture interface: v2.00 [ 7.508636] omap3isp omap3isp: Revision 15.0 found [ 7.513977] omap-iommu omap-iommu.0: mmu_isp: version 1.1 [ 7.619842] omap3isp omap3isp: hist: DMA channel = 4 [ 7.733154] omap3isp omap3isp: isp_xclk_set_rate: cam_xclka set to 24685714 Hz (div 7) [ 7.767486] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 7.776092] ov9655 2-0030: OV9655 power on [ 7.814544] ov9655 2-0030: OV9655 read register 1c [ 7.820312] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 7.846405] ov9655 2-0030: OV9655 read register 1d [ 7.894409] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 7.902923] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral [ 7.914031] ov9655 2-0030: OV9655 read register 0a [ 7.949890] ov9655 2-0030: OV9655 read register 0b [ 7.972137] ov9655 2-0030: OV9655 power off [ 8.036682] ov9655 2-0030: OV9655 detected at address 0x30 [ 8.155761] reg-virt-consumer reg-virt-consumer.2: Failed to obtain supply 'vaux2': -517 [ 8.179595] hso: drivers/net/usb/hso.c: Option Wireless [ 8.202301] platform reg-virt-consumer.2: Driver reg-virt-consumer requests probe deferral [ 8.231109] usbcore: registered new interface driver hso [ 8.245391] reg-virt-consumer reg-virt-consumer.3: Failed to obtain supply 'vaux3': -517 [ 8.253906] platform reg-virt-consumer.3: Driver reg-virt-consumer requests probe deferral [ 8.930755] ov9655_open [ 8.933380] ov9655 2-0030: OV9655 power on [ 9.030181] ov9655_reset [ 9.032867] ov9655 2-0030: ov9655_reset [ 9.039184] ov9655 2-0030: OV9655 write 01 to register 09 [ 9.045135] ov9655 2-0030: OV9655 write 40 to register 15 [ 9.059875] ov9655 2-0030: OV9655 write 00 to register 11 [ 9.065856] ov9655 2-0030: OV9655 write 4a to register 6b
Comment 5 by Nikolaus Schaller, Oct 1, 2013
The next step is to clean up the code (remove unimplemented features, but keep them in some TODO comment) and try to get it upstream.
Owner: marekb
Comment 6 by Nikolaus Schaller, Dec 17, 2013
changed to 'task'
Summary: [upstream] OV9655 driver for OMAP3 ISP
Comment 7 by Nikolaus Schaller, Apr 10, 2014
reduced priority and postponed for milestone 3.15
Comment 8 by Nikolaus Schaller, May 26, 2014
(new) ISP appears to arrive in 3.16: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/comm it/?id=656111f4b9cbc5a9b86cc2d6ac54dea0855209f0
Comment 9 by Nikolaus Schaller, Nov 24, 2014
Here is some info about DT bindings for a camera: https://www.mail-archive.com/linux-media@vger.kernel.org/msg70444.htm l
Comment 10 by Nikolaus Schaller, May 19, 2015
DT has been updated to configure ISP. Missing is DT support for OV9655 camera module and the module needs to be adjusted to some V4L2 API changes.
Comment 11 by Nikolaus Schaller, Jun 7, 2016
There is an ov9650/9652 driver for a while which looks to be a good starting point. Checking register constants of that driver with our ov9655 data sheet shows ca. 80% similarities, but 20% of the registers are different. This means the driver has to get dynamic register numbers / values. Additionally it is lacking: * device tree support * clock kand regulator control
Comment 12 by Nikolaus Schaller, Jun 7, 2016
hns has worked during the OpenPhoenux hacking weekend.
Comment 13 by Nikolaus Schaller, Jun 7, 2016
The feature branch work/hns/video/ov9655 now adds most missing functions - except programming the chip. It is clocked, powered and found if available.
Comment 14 by Nikolaus Schaller, Apr 22, 2020
Status is that it did work partially for some years and is broken again since v5.7-rc1. The symptom is that the manufacturer id register can not be read and this makes the driver reject probing: [ 38.270416] ov9655 1-0030: ov9655_probe [ 38.274536] ov9655 1-0030: supply dvdd not found, using dummy regulator [ 38.300537] ov9655 1-0030: supply dovdd not found, using dummy regulator [ 38.308227] ov9655 1-0030: __ov9655_set_power on=1 [ 38.440185] ov9655 1-0030: OV9655 read register 1c : ffffff87 [ 38.453613] ov9655 1-0030: OV9655 read register 1d : ffffff87 [ 38.459686] ov9655 1-0030: OV9655 not detected, can't read manufacturer id [ 38.490600] ov9655 1-0030: __ov9655_set_power on=0 [ 38.507781] ov9655: probe of 1-0030 rejects match -19
Comment 15 by Nikolaus Schaller, Apr 22, 2020
Well, that was a misunderstanding. The device which was tested has no ov9655 installed. So read failure is ok and expected. Nevertheless the driver needs some cleanup and it is strange that it is not probed earlier.
Reported by Nikolaus Schaller, Jul 28, 2013