Skip to content

Commit

Permalink
exynos4-is: Use the generic MIPI CSIS PHY driver
Browse files Browse the repository at this point in the history
Use the generic PHY API instead of the platform callback
to control the MIPI CSIS DPHY.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Sylwester Nawrocki authored and Greg Kroah-Hartman committed Oct 16, 2013
1 parent 069d2e2 commit f1468a2
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 13 deletions.
2 changes: 1 addition & 1 deletion drivers/media/platform/exynos4-is/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ config VIDEO_S5P_FIMC
config VIDEO_S5P_MIPI_CSIS
tristate "S5P/EXYNOS MIPI-CSI2 receiver (MIPI-CSIS) driver"
depends on REGULATOR
select S5P_SETUP_MIPIPHY
select GENERIC_PHY
help
This is a V4L2 driver for Samsung S5P and EXYNOS4 SoC MIPI-CSI2
receiver (MIPI-CSIS) devices.
Expand Down
13 changes: 10 additions & 3 deletions drivers/media/platform/exynos4-is/mipi-csis.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <linux/memory.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_data/mipi-csis.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
Expand Down Expand Up @@ -180,6 +181,7 @@ struct csis_drvdata {
* @sd: v4l2_subdev associated with CSIS device instance
* @index: the hardware instance index
* @pdev: CSIS platform device
* @phy: pointer to the CSIS generic PHY
* @regs: mmaped I/O registers memory
* @supplies: CSIS regulator supplies
* @clock: CSIS clocks
Expand All @@ -203,6 +205,7 @@ struct csis_state {
struct v4l2_subdev sd;
u8 index;
struct platform_device *pdev;
struct phy *phy;
void __iomem *regs;
struct regulator_bulk_data supplies[CSIS_NUM_SUPPLIES];
struct clk *clock[NUM_CSIS_CLOCKS];
Expand Down Expand Up @@ -779,8 +782,8 @@ static int s5pcsis_parse_dt(struct platform_device *pdev,
"samsung,csis-wclk");

state->num_lanes = endpoint.bus.mipi_csi2.num_data_lanes;

of_node_put(node);

return 0;
}
#else
Expand Down Expand Up @@ -829,6 +832,10 @@ static int s5pcsis_probe(struct platform_device *pdev)
return -EINVAL;
}

state->phy = devm_phy_get(dev, "csis");
if (IS_ERR(state->phy))
return PTR_ERR(state->phy);

mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
state->regs = devm_ioremap_resource(dev, mem_res);
if (IS_ERR(state->regs))
Expand Down Expand Up @@ -922,7 +929,7 @@ static int s5pcsis_pm_suspend(struct device *dev, bool runtime)
mutex_lock(&state->lock);
if (state->flags & ST_POWERED) {
s5pcsis_stop_stream(state);
ret = s5p_csis_phy_enable(state->index, false);
ret = phy_power_off(state->phy);
if (ret)
goto unlock;
ret = regulator_bulk_disable(CSIS_NUM_SUPPLIES,
Expand Down Expand Up @@ -958,7 +965,7 @@ static int s5pcsis_pm_resume(struct device *dev, bool runtime)
state->supplies);
if (ret)
goto unlock;
ret = s5p_csis_phy_enable(state->index, true);
ret = phy_power_on(state->phy);
if (!ret) {
state->flags |= ST_POWERED;
} else {
Expand Down
9 changes: 0 additions & 9 deletions include/linux/platform_data/mipi-csis.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,4 @@ struct s5p_platform_mipi_csis {
u8 hs_settle;
};

/**
* s5p_csis_phy_enable - global MIPI-CSI receiver D-PHY control
* @id: MIPI-CSIS harware instance index (0...1)
* @on: true to enable D-PHY and deassert its reset
* false to disable D-PHY
* @return: 0 on success, or negative error code on failure
*/
int s5p_csis_phy_enable(int id, bool on);

#endif /* __PLAT_SAMSUNG_MIPI_CSIS_H_ */

0 comments on commit f1468a2

Please sign in to comment.