[media] v4l: omap4iss: Replace outdated OMAP4 control pad API with syscon
The omap4_ctrl_pad_readl and omap4_ctrl_pad_writel functions have been removed by commitefde234674
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:efde234674
("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>
This commit is contained in:
Родитель
5a9b06a27d
Коммит
fefad2d54b
|
@ -2,6 +2,7 @@ config VIDEO_OMAP4
|
||||||
bool "OMAP 4 Camera support"
|
bool "OMAP 4 Camera support"
|
||||||
depends on VIDEO_V4L2=y && VIDEO_V4L2_SUBDEV_API && I2C=y && ARCH_OMAP4
|
depends on VIDEO_V4L2=y && VIDEO_V4L2_SUBDEV_API && I2C=y && ARCH_OMAP4
|
||||||
depends on HAS_DMA
|
depends on HAS_DMA
|
||||||
|
select MFD_SYSCON
|
||||||
select VIDEOBUF2_DMA_CONTIG
|
select VIDEOBUF2_DMA_CONTIG
|
||||||
---help---
|
---help---
|
||||||
Driver for an OMAP 4 ISS controller.
|
Driver for an OMAP 4 ISS controller.
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/mfd/syscon.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
@ -1386,6 +1387,16 @@ static int iss_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
platform_set_drvdata(pdev, iss);
|
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 */
|
/* Clocks */
|
||||||
ret = iss_map_mem_resource(pdev, iss, OMAP4_ISS_MEM_TOP);
|
ret = iss_map_mem_resource(pdev, iss, OMAP4_ISS_MEM_TOP);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include "iss_ipipe.h"
|
#include "iss_ipipe.h"
|
||||||
#include "iss_resizer.h"
|
#include "iss_resizer.h"
|
||||||
|
|
||||||
|
struct regmap;
|
||||||
|
|
||||||
#define to_iss_device(ptr_module) \
|
#define to_iss_device(ptr_module) \
|
||||||
container_of(ptr_module, struct iss_device, ptr_module)
|
container_of(ptr_module, struct iss_device, ptr_module)
|
||||||
#define to_device(ptr_module) \
|
#define to_device(ptr_module) \
|
||||||
|
@ -79,6 +81,7 @@ struct iss_reg {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* struct iss_device - ISS device structure.
|
* struct iss_device - ISS device structure.
|
||||||
|
* @syscon: Regmap for the syscon register space
|
||||||
* @crashed: Bitmask of crashed entities (indexed by entity ID)
|
* @crashed: Bitmask of crashed entities (indexed by entity ID)
|
||||||
*/
|
*/
|
||||||
struct iss_device {
|
struct iss_device {
|
||||||
|
@ -93,6 +96,7 @@ struct iss_device {
|
||||||
|
|
||||||
struct resource *res[OMAP4_ISS_MEM_LAST];
|
struct resource *res[OMAP4_ISS_MEM_LAST];
|
||||||
void __iomem *regs[OMAP4_ISS_MEM_LAST];
|
void __iomem *regs[OMAP4_ISS_MEM_LAST];
|
||||||
|
struct regmap *syscon;
|
||||||
|
|
||||||
u64 raw_dmamask;
|
u64 raw_dmamask;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
|
#include <linux/regmap.h>
|
||||||
|
|
||||||
#include "../../../../arch/arm/mach-omap2/control.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 [18] : CSIPHY1 CTRLCLK enable
|
||||||
* - bit [17:16] : CSIPHY1 config: 00 d-phy, 01/10 ccp2
|
* - 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) {
|
if (subdevs->interface == ISS_INTERFACE_CSI2A_PHY1) {
|
||||||
cam_rx_ctrl &= ~(OMAP4_CAMERARX_CSI21_LANEENABLE_MASK |
|
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;
|
cam_rx_ctrl |= OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
omap4_ctrl_pad_writel(cam_rx_ctrl,
|
regmap_write(iss->syscon, 0x68, cam_rx_ctrl);
|
||||||
OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX);
|
|
||||||
|
|
||||||
/* Reset used lane count */
|
/* Reset used lane count */
|
||||||
csi2->phy->used_data_lanes = 0;
|
csi2->phy->used_data_lanes = 0;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче