Skip to content

Commit

Permalink
[media] v4l: omap4iss: Replace outdated OMAP4 control pad API with sy…
Browse files Browse the repository at this point in the history
…scon

The omap4_ctrl_pad_readl and omap4_ctrl_pad_writel functions have been
removed by commit efde234 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.

Fixes: efde234 ("ARM: OMAP4+: control: remove support for legacy pad read/write")

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sakari Alius <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  • Loading branch information
Laurent Pinchart authored and Mauro Carvalho Chehab committed Apr 28, 2015
1 parent 5a9b06a commit fefad2d
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
1 change: 1 addition & 0 deletions drivers/staging/media/omap4iss/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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.
11 changes: 11 additions & 0 deletions drivers/staging/media/omap4iss/iss.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions drivers/staging/media/omap4iss/iss.h
Original file line number Diff line number Diff line change
Expand Up @@ -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) \
Expand Down Expand Up @@ -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 {
Expand All @@ -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;

Expand Down
12 changes: 7 additions & 5 deletions drivers/staging/media/omap4iss/iss_csiphy.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include <linux/delay.h>
#include <linux/device.h>
#include <linux/regmap.h>

#include "../../../../arch/arm/mach-omap2/control.h"

Expand Down Expand Up @@ -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 |
Expand All @@ -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;
Expand Down

0 comments on commit fefad2d

Please sign in to comment.