omap4iss: avoid broken OMAP4 dependency
Subsystems (2)
PATCH 1/1 omap4iss: avoid broken OMAP4 dependency
The omap4iss driver uses an interface that used to be provided by OMAP4 but has now been removed and replaced with a WARN_ON(1) statement, which likely broke the iss_csiphy code at runtime.
It also broke compiling the driver when CONFIG_ARCH_OMAP2PLUS is set, which is implied by OMAP4:
drivers/staging/media/omap4iss/iss_csiphy.c: In function 'omap4iss_csiphy_config':drivers/staging/media/omap4iss/iss_csiphy.c:167:2: error: implicit declaration of function 'omap4_ctrl_pad_writel' [-Werror=implicit-function-declaration]
omap4_ctrl_pad_writel(cam_rx_ctrl,
In turn, this broke ARM allyesconfig builds. Replacing the omap4_ctrl_pad_writel call with WARN_ON(1) won't make the situation any worse than it already is, but fixes the build problem.
---
drivers/staging/media/omap4iss/iss_csiphy.c +0 -0
@@ -140,9 +140,7 @@ int omap4iss_csiphy_config(struct iss_device *iss,
* - bit [18] : CSIPHY1 CTRLCLK enable
* - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2 */
- cam_rx_ctrl = omap4_ctrl_pad_readl(
- OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX);
-
+ cam_rx_ctrl = WARN_ON(1);
if (subdevs->interface == ISS_INTERFACE_CSI2A_PHY1) {
cam_rx_ctrl &= ~(OMAP4_CAMERARX_CSI21_LANEENABLE_MASK |
@@ -166,8 +164,7 @@ int omap4iss_csiphy_config(struct iss_device *iss,
cam_rx_ctrl |= OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK;
}
- omap4_ctrl_pad_writel(cam_rx_ctrl,
- OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX);
+ WARN_ON(1);
/* Reset used lane count */
csi2->phy->used_data_lanes = 0;
Hi Arnd,
Thank you for the patch.
Quoted 13 lines · On Friday 10 April 2015 22:20:20 Arnd Bergmann wrote:
The omap4iss driver uses an interface that used to be provided by OMAP4 but has now been removed and replaced with a
WARN_ON(1)statement, which likely broke theiss_csiphycode at runtime.It also broke compiling the driver when
CONFIG_ARCH_OMAP2PLUSis set, which is implied by OMAP4:
drivers/staging/media/omap4iss/iss_csiphy.c: In function 'omap4iss_csiphy_config':drivers/staging/media/omap4iss/iss_csiphy.c:167:2: error: implicit declaration of function 'omap4_ctrl_pad_writel' [-Werror=implicit-function-declaration] omap4_ctrl_pad_writel(cam_rx_ctrl,
Quoted 4 lines
In turn, this broke ARM allyesconfig builds. Replacing the
omap4_ctrl_pad_writelcall withWARN_ON(1)won't make the situation any worse than it already is, but fixes the build problem.
I've fixed the problem properly by switching to the syscon API. I'll send the patch as a separate reply, let's discuss there how to handle the issue.
Quoted 31 lines
Signed-off-by Arnd Bergmann <[email protected]>Fixes efde234674d9 ("ARM: OMAP4+: control: remove support for legacy padread/write")
---(quoted diff) +0
-0
b/drivers/staging/media/omap4iss/iss_csiphy.cindex7c3d55d811ef..24f56ed90ac3100644drivers/staging/media/omap4iss/iss_csiphy.c +2
-5@@ -140,9 +140,7 @@ int omap4iss_csiphy_config(struct iss_device *iss,* - bit [18] : CSIPHY1 CTRLCLK enable * - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2 */ - cam_rx_ctrl =omap4_ctrl_pad_readl ( -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); - + cam_rx_ctrl =WARN_ON (1 );if (subdevs->interface ==ISS_INTERFACE_CSI2A_PHY1 ) { cam_rx_ctrl &= ~(OMAP4_CAMERARX_CSI21_LANEENABLE_MASK |@@ -166,8 +164,7 @@ int omap4iss_csiphy_config(struct iss_device *iss, cam_rx_ctrl |=OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK ; } -omap4_ctrl_pad_writel (cam_rx_ctrl, -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); +WARN_ON (1 );/* Reset used lane count */ csi2->phy->used_data_lanes =0 ;
Signature · 3 lines
Regards, Laurent Pinchart
PATCH 1/1 v4l: omap4iss: Replace outdated OMAP4 control pad API with syscon
In reply to Arnd BergmannThe omap4_ctrl_pad_readl and omap4_ctrl_pad_writel functions have been removed by commit efde234674d9 ("ARM: OMAP4+: control: remove support for legacy pad read/write") but are still used by the OMAP4 ISS driver, resulting in a compilation breakage:
drivers/staging/media/omap4iss/iss_csiphy.c: In function 'omap4iss_csiphy_config':drivers/staging/media/omap4iss/iss_csiphy.c:167:2: error: implicit declaration of function 'omap4_ctrl_pad_writel' [-Werror=implicit-function-declaration]
omap4_ctrl_pad_writel(cam_rx_ctrl,
Fix the problem by using the syscon API to reaplace the control pad API. Lookup the syscon instance by compatible name for now as the OMAP4 ISS driver doesn't support DT yet.
--- drivers/staging/media/omap4iss/Kconfig | 1 + drivers/staging/media/omap4iss/iss.c | 11 +++++++++++ drivers/staging/media/omap4iss/iss.h | 4 ++++ drivers/staging/media/omap4iss/iss_csiphy.c | 12 +++++++----- 4 files changed, 23 insertions(+), 5 deletions(-)
Hi Arnd,
This patch doesn't depend nor conflict with the OMAP4 ISS patches scheduled to be merged in v4.1. If Mauro is fine with that, and if it makes your life easier, it could get merged through the arm-soc tree. Please let me know what you prefer.
drivers/staging/media/omap4iss/Kconfig +1 -0
@@ -2,6 +2,7 @@ config VIDEO_OMAP4 bool "OMAP 4 Camera support" depends on VIDEO_V4L2=y && VIDEO_V4L2_SUBDEV_API && I2C=y && ARCH_OMAP4 depends on HAS_DMA + select MFD_SYSCON select VIDEOBUF2_DMA_CONTIG ---help--- Driver for an OMAP 4 ISS controller.
drivers/staging/media/omap4iss/iss.c +11 -0
@@ -17,6 +17,7 @@#include <linux/dma-mapping.h> #include <linux/i2c.h> #include <linux/interrupt.h> +#include <linux/mfd/syscon.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h>
@@ -1386,6 +1387,16 @@ static int iss_probe(struct platform_device *pdev)platform_set_drvdata (pdev, iss); +/* +* TODO: When implementing DT support switch to syscon regmap lookup by +* phandle. +*/ + iss->syscon =syscon_regmap_lookup_by_compatible ("syscon" ); +if (IS_ERR (iss->syscon)) { + ret =PTR_ERR (iss->syscon); + goto error; + } +/* Clocks */ ret =iss_map_mem_resource (pdev, iss,OMAP4_ISS_MEM_TOP );if (ret <0 )
drivers/staging/media/omap4iss/iss.h +4 -0
@@ -29,6 +29,8 @@#include "iss_ipipe.h" #include "iss_resizer.h" +struct regmap ; +#define to_iss_device (ptr_module) \ container_of(ptr_module, struct iss_device, ptr_module)#define to_device (ptr_module) \
@@ -79,6 +81,7 @@ struct iss_reg {/* * struct iss_device - ISS device structure. +* @syscon: Regmap for the syscon register space * @crashed: Bitmask of crashed entities (indexed by entity ID) */ struct iss_device {
@@ -93,6 +96,7 @@ struct iss_device {struct resource *res[OMAP4_ISS_MEM_LAST ];void __iomem *regs[OMAP4_ISS_MEM_LAST ]; +struct regmap *syscon;u64 raw_dmamask;
drivers/staging/media/omap4iss/iss_csiphy.c +7 -5
@@ -13,6 +13,7 @@#include <linux/delay.h> #include <linux/device.h> +#include <linux/regmap.h> #include "../../../../arch/arm/mach-omap2/control.h"
@@ -140,9 +141,11 @@ int omap4iss_csiphy_config(struct iss_device *iss,* - bit [18] : CSIPHY1 CTRLCLK enable * - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2 */ - cam_rx_ctrl =omap4_ctrl_pad_readl ( -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); - +/* +* TODO: When implementing DT support specify the CONTROL_CAMERA_RX +* register offset in the syscon property instead of hardcoding it. +*/ +regmap_read (iss->syscon,0x68 , &cam_rx_ctrl);if (subdevs->interface ==ISS_INTERFACE_CSI2A_PHY1 ) { cam_rx_ctrl &= ~(OMAP4_CAMERARX_CSI21_LANEENABLE_MASK |
@@ -166,8 +169,7 @@ int omap4iss_csiphy_config(struct iss_device *iss, cam_rx_ctrl |=OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK ; } -omap4_ctrl_pad_writel (cam_rx_ctrl, -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); +regmap_write (iss->syscon,0x68 , cam_rx_ctrl);/* Reset used lane count */ csi2->phy->used_data_lanes =0 ;
Signature · 3 lines
Regards, Laurent Pinchart
PATCH 1/1 v4l: omap4iss: Replace outdated OMAP4 control pad API with syscon
Hi Laurent,
Quoted 14 lines · Laurent Pinchart
drivers/staging/media/omap4iss/iss_csiphy.c +1
-0@@ -13,6 +13,7 @@#include <linux/delay.h> #include <linux/device.h> +#include <linux/regmap.h> #include "../../../../arch/arm/mach-omap2/control.h" @@ -140,9 +141,11 @@ int omap4iss_csiphy_config(struct iss_device *iss,* - bit [18] : CSIPHY1 CTRLCLK enable
drivers/staging/media/omap4iss/iss_csiphy.c int omap4iss_csiphy_config(struct iss_device *iss, · line 148
Quoted 10 lines
drivers/staging/media/omap4iss/iss_csiphy.c +5
-3* - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2 */ - cam_rx_ctrl =omap4_ctrl_pad_readl ( -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); - +/* +* TODO: When implementing DT support specify the CONTROL_CAMERA_RX +* register offset in the syscon property instead of hardcoding it. +*/ +regmap_read (iss->syscon,0x68 , &cam_rx_ctrl);
Do you use platform data now? I guess the address is the same on all SoCs that use the OMAP 4 ISS?
Signature · 4 lines
Kind regards, Sakari Ailus e-mail: sakari.ailus at iki.fi XMPP: sailus at retiisi.org.uk
PATCH 1/1 v4l: omap4iss: Replace outdated OMAP4 control pad API with syscon
Hi Sakari,
Thank you for the review.
Quoted 14 lines · On Sunday 12 April 2015 17:31:09 Sakari Ailus wrote:
Quoted 13 lines · Laurent Pinchart
(quoted diff) +0
-0
b/drivers/staging/media/omap4iss/iss_csiphy.cindex 7c3d55d..748607f 100644drivers/staging/media/omap4iss/iss_csiphy.c +1
-0@@ -13,6 +13,7 @@#include <linux/delay.h> #include <linux/device.h> +#include <linux/regmap.h> #include "../../../../arch/arm/mach-omap2/control.h"
Quoted 15 lines
drivers/staging/media/omap4iss/iss_csiphy.c int omap4iss_csiphy_config(struct iss_device *iss, · line 148
Quoted 12 lines
drivers/staging/media/omap4iss/iss_csiphy.c +5
-3@@ -140,9 +141,11 @@ int omap4iss_csiphy_config(struct iss_device *iss,* - bit [18] : CSIPHY1 CTRLCLK enable * - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2 */ - cam_rx_ctrl =omap4_ctrl_pad_readl ( -OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX ); - +/* +* TODO: When implementing DT support specify the CONTROL_CAMERA_RX +* register offset in the syscon property instead of hardcoding it. +*/ +regmap_read (iss->syscon,0x68 , &cam_rx_ctrl);Do you use platform data now? I guess the address is the same on all SoCs that use the OMAP 4 ISS?
Yes I use platform data for now. The address is the same on all SoCs on which I've tested the driver, which is a single SoC :-) I'll research that when implementing DT bindings.
Quoted 1 line
Acked-by Sakari Alius <[email protected]>
Thank you.
Signature · 3 lines
Regards, Laurent Pinchart
PATCH 1/1 v4l: omap4iss: Replace outdated OMAP4 control pad API with syscon
In reply to Laurent PinchartQuoted 7 lines · On Sunday 12 April 2015 15:28:13 Laurent Pinchart wrote:
Hi Arnd,
This patch doesn't depend nor conflict with the OMAP4 ISS patches scheduled to be merged in v4.1. If Mauro is fine with that, and if it makes your life easier, it could get merged through the arm-soc tree. Please let me know what you prefer.
I think it's fine to merge it through the media/staging tree as normal. I'm not as worried about bisection problems in staging drivers as elsewhere.
Thanks a lot for addressing this properly!
Arnd