Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] sh-mobile-ceu-driver: support max width and height in DT

Some CEU implementations have non-standard (larger) maximum supported
width and height values. Add two OF properties to specify them.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Guennadi Liakhovetski and committed by
Mauro Carvalho Chehab
812e8b22 f146e4e7

+39 -2
+18
Documentation/devicetree/bindings/media/sh_mobile_ceu.txt
··· 1 + Bindings, specific for the sh_mobile_ceu_camera.c driver: 2 + - compatible: Should be "renesas,sh-mobile-ceu" 3 + - reg: register base and size 4 + - interrupts: the interrupt number 5 + - interrupt-parent: the interrupt controller 6 + - renesas,max-width: maximum image width, supported on this SoC 7 + - renesas,max-height: maximum image height, supported on this SoC 8 + 9 + Example: 10 + 11 + ceu0: ceu@0xfe910000 { 12 + compatible = "renesas,sh-mobile-ceu"; 13 + reg = <0xfe910000 0xa0>; 14 + interrupt-parent = <&intcs>; 15 + interrupts = <0x880>; 16 + renesas,max-width = <8188>; 17 + renesas,max-height = <8188>; 18 + };
+21 -2
drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
··· 2116 2116 2117 2117 /* TODO: implement per-device bus flags */ 2118 2118 if (pcdev->pdata) { 2119 - pcdev->max_width = pcdev->pdata->max_width ? : 2560; 2120 - pcdev->max_height = pcdev->pdata->max_height ? : 1920; 2119 + pcdev->max_width = pcdev->pdata->max_width; 2120 + pcdev->max_height = pcdev->pdata->max_height; 2121 2121 pcdev->flags = pcdev->pdata->flags; 2122 + } 2123 + 2124 + if (!pcdev->max_width) { 2125 + unsigned int v; 2126 + err = of_property_read_u32(pdev->dev.of_node, "renesas,max-width", &v); 2127 + if (!err) 2128 + pcdev->max_width = v; 2129 + 2130 + if (!pcdev->max_width) 2131 + pcdev->max_width = 2560; 2132 + } 2133 + if (!pcdev->max_height) { 2134 + unsigned int v; 2135 + err = of_property_read_u32(pdev->dev.of_node, "renesas,max-height", &v); 2136 + if (!err) 2137 + pcdev->max_height = v; 2138 + 2139 + if (!pcdev->max_height) 2140 + pcdev->max_height = 1920; 2122 2141 } 2123 2142 2124 2143 base = devm_ioremap_resource(&pdev->dev, res);