* [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs
@ 2013-09-28 19:27 Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
` (4 more replies)
0 siblings, 5 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
This patch series adds a simple driver for the Samsung S5P/Exynos SoC
series MIPI CSI-2 receiver (MIPI CSIS) and MIPI DSI transmitter (MIPI
DSIM) DPHYs, using the generic PHY framework. Previously the MIPI
CSIS and MIPI DSIM used a platform callback to control the PHY power
enable and reset bits. This non-generic platform code supporting only
limited set of SoCs is now removed.
This completes migration to the device tree of the Exynos/S5P MIPI CSI
slave device driver.
Changes since v4:
- updated to the latest version of the generic PHY framework - removed
PHY labels from the platform data structure. There is already no need
for non-dt support in this PHY driver so the platform data where any
struct phy_init_data would be passed is not added.
Changes since v3 (only patch 1/5):
- replaced spin_(un)lock_irq_{save,restore} with spin_{lock,unlock}.
- DT binding file renamed to samsung-phy.txt, so it can be used for
other PHYs as well,
- removed <linux/delay.h> inclusion,
- added missing spin_lock_init().
Changes since v2:
- adapted to the generic PHY API v9: use phy_set/get_drvdata(),
- fixed of_xlate callback to return ERR_PTR() instead of NULL,
- namespace cleanup, put "GPL v2" as MODULE_LICENSE, removed pr_debug,
- removed phy id check in __set_phy_state().
Changes since v1:
- enabled build as module and with CONFIG_OF disabled,
- added phy_id enum,
- of_address_to_resource() replaced with platform_get_resource(),
- adapted to changes in the PHY API v7, v8 - added phy labels,
- added MODULE_DEVICE_TABLE() entry,
- the driver file renamed to phy-exynos-mipi-video.c,
- changed DT compatible string to "samsung,s5pv210-mipi-video-phy",
- corrected the compatible property's description.
- patch 3/5 "video: exynos_dsi: Use generic PHY driver" replaced
with a patch modifying the MIPI DSIM driver which is currently
in mainline.
Sylwester Nawrocki (5):
ARM: dts: Add MIPI PHY node to exynos4.dtsi
phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs
[media] exynos4-is: Use the generic MIPI CSIS PHY driver
video: exynos_mipi_dsim: Use the generic PHY driver
ARM: Samsung: Remove the MIPI PHY setup code
.../devicetree/bindings/phy/samsung-phy.txt | 14 ++
arch/arm/boot/dts/exynos4.dtsi | 10 +
arch/arm/mach-exynos/include/mach/regs-pmu.h | 5 -
arch/arm/mach-s5pv210/include/mach/regs-clock.h | 4 -
arch/arm/plat-samsung/Kconfig | 5 -
arch/arm/plat-samsung/Makefile | 1 -
arch/arm/plat-samsung/setup-mipiphy.c | 60 -------
drivers/media/platform/exynos4-is/Kconfig | 2 +-
drivers/media/platform/exynos4-is/mipi-csis.c | 13 +-
drivers/phy/Kconfig | 6 +
drivers/phy/Makefile | 7 +-
drivers/phy/phy-exynos-mipi-video.c | 176 ++++++++++++++++++++
drivers/video/exynos/Kconfig | 1 +
drivers/video/exynos/exynos_mipi_dsi.c | 19 +-
include/linux/platform_data/mipi-csis.h | 9 -
include/video/exynos_mipi_dsim.h | 5 +-
16 files changed, 234 insertions(+), 103 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/samsung-phy.txt
delete mode 100644 arch/arm/plat-samsung/setup-mipiphy.c
create mode 100644 drivers/phy/phy-exynos-mipi-video.c
--
1.7.4.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
@ 2013-09-28 19:27 ` Sylwester Nawrocki
2013-09-28 19:37 ` Sylwester Nawrocki
2013-10-01 5:40 ` Kishon Vijay Abraham I
2013-09-28 19:27 ` [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs Sylwester Nawrocki
` (3 subsequent siblings)
4 siblings, 2 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
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>
---
arch/arm/boot/dts/exynos4.dtsi | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index caadc02..a73eeb5 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -49,6 +49,12 @@
reg = <0x10000000 0x100>;
};
+ mipi_phy: video-phy@10020710 {
+ compatible = "samsung,s5pv210-mipi-video-phy";
+ reg = <0x10020710 8>;
+ #phy-cells = <1>;
+ };
+
pd_mfc: mfc-power-domain@10023C40 {
compatible = "samsung,exynos4210-pd";
reg = <0x10023C40 0x20>;
@@ -161,6 +167,8 @@
clock-names = "csis", "sclk_csis";
bus-width = <4>;
samsung,power-domain = <&pd_cam>;
+ phys = <&mipi_phy 0>;
+ phy-names = "csis";
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
@@ -174,6 +182,8 @@
clock-names = "csis", "sclk_csis";
bus-width = <2>;
samsung,power-domain = <&pd_cam>;
+ phys = <&mipi_phy 2>;
+ phy-names = "csis";
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
@ 2013-09-28 19:27 ` Sylwester Nawrocki
2013-09-28 19:35 ` Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 3/5] [media] exynos4-is: Use the generic MIPI CSIS PHY driver Sylwester Nawrocki
` (2 subsequent siblings)
4 siblings, 1 reply; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
Add a PHY provider driver for the Samsung S5P/Exynos SoC MIPI CSI-2
receiver and MIPI DSI transmitter DPHYs.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
Changes since v4:
- updated to latest version of the PHY framework - removed PHY
labels.
The individual driver symbols in drivers/phy/Kconfig should
presumably be prefixed with, e.g. PHY_. This is something that
perhaps could be done as a follow up patch.
---
.../devicetree/bindings/phy/samsung-phy.txt | 14 ++
drivers/phy/Kconfig | 6 +
drivers/phy/Makefile | 7 +-
drivers/phy/phy-exynos-mipi-video.c | 176 ++++++++++++++++++++
4 files changed, 200 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/samsung-phy.txt
create mode 100644 drivers/phy/phy-exynos-mipi-video.c
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt
new file mode 100644
index 0000000..5ff208c
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt
@@ -0,0 +1,14 @@
+Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY
+-------------------------------------------------
+
+Required properties:
+- compatible : should be "samsung,s5pv210-mipi-video-phy";
+- reg : offset and length of the MIPI DPHY register set;
+- #phy-cells : from the generic phy bindings, must be 1;
+
+For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in
+the PHY specifier identifies the PHY and its meaning is as follows:
+ 0 - MIPI CSIS 0,
+ 1 - MIPI DSIM 0,
+ 2 - MIPI CSIS 1,
+ 3 - MIPI DSIM 1.
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index ac239ac..0062d7e 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -15,6 +15,12 @@ config GENERIC_PHY
phy users can obtain reference to the PHY. All the users of this
framework should select this config.
+config PHY_EXYNOS_MIPI_VIDEO
+ tristate "S5P/EXYNOS SoC series MIPI CSI-2/DSI PHY driver"
+ help
+ Support for MIPI CSI-2 and MIPI DSI DPHY found on Samsung S5P
+ and EXYNOS SoCs.
+
config OMAP_USB2
tristate "OMAP USB2 PHY Driver"
depends on ARCH_OMAP2PLUS
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index 0dd8a98..6344053 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -2,6 +2,7 @@
# Makefile for the phy drivers.
#
-obj-$(CONFIG_GENERIC_PHY) += phy-core.o
-obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o
-obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o
+obj-$(CONFIG_GENERIC_PHY) += phy-core.o
+obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
+obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o
+obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o
diff --git a/drivers/phy/phy-exynos-mipi-video.c b/drivers/phy/phy-exynos-mipi-video.c
new file mode 100644
index 0000000..b73b86a
--- /dev/null
+++ b/drivers/phy/phy-exynos-mipi-video.c
@@ -0,0 +1,176 @@
+/*
+ * Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY driver
+ *
+ * Copyright (C) 2013 Samsung Electronics Co., Ltd.
+ * Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+#include <linux/spinlock.h>
+
+/* MIPI_PHYn_CONTROL register offset: n = 0..1 */
+#define EXYNOS_MIPI_PHY_CONTROL(n) ((n) * 4)
+#define EXYNOS_MIPI_PHY_ENABLE (1 << 0)
+#define EXYNOS_MIPI_PHY_SRESETN (1 << 1)
+#define EXYNOS_MIPI_PHY_MRESETN (1 << 2)
+#define EXYNOS_MIPI_PHY_RESET_MASK (3 << 1)
+
+enum exynos_mipi_phy_id {
+ EXYNOS_MIPI_PHY_ID_CSIS0,
+ EXYNOS_MIPI_PHY_ID_DSIM0,
+ EXYNOS_MIPI_PHY_ID_CSIS1,
+ EXYNOS_MIPI_PHY_ID_DSIM1,
+ EXYNOS_MIPI_PHYS_NUM
+};
+
+#define is_mipi_dsim_phy_id(id) \
+ ((id) = EXYNOS_MIPI_PHY_ID_DSIM0 || (id) = EXYNOS_MIPI_PHY_ID_DSIM1)
+
+struct exynos_mipi_video_phy {
+ spinlock_t slock;
+ struct video_phy_desc {
+ struct phy *phy;
+ unsigned int index;
+ } phys[EXYNOS_MIPI_PHYS_NUM];
+ void __iomem *regs;
+};
+
+static int __set_phy_state(struct exynos_mipi_video_phy *state,
+ enum exynos_mipi_phy_id id, unsigned int on)
+{
+ void __iomem *addr;
+ u32 reg, reset;
+
+ addr = state->regs + EXYNOS_MIPI_PHY_CONTROL(id / 2);
+
+ if (is_mipi_dsim_phy_id(id))
+ reset = EXYNOS_MIPI_PHY_MRESETN;
+ else
+ reset = EXYNOS_MIPI_PHY_SRESETN;
+
+ spin_lock(&state->slock);
+ reg = readl(addr);
+ if (on)
+ reg |= reset;
+ else
+ reg &= ~reset;
+ writel(reg, addr);
+
+ /* Clear ENABLE bit only if MRESETN, SRESETN bits are not set. */
+ if (on)
+ reg |= EXYNOS_MIPI_PHY_ENABLE;
+ else if (!(reg & EXYNOS_MIPI_PHY_RESET_MASK))
+ reg &= ~EXYNOS_MIPI_PHY_ENABLE;
+
+ writel(reg, addr);
+ spin_unlock(&state->slock);
+ return 0;
+}
+
+#define to_mipi_video_phy(desc) \
+ container_of((desc), struct exynos_mipi_video_phy, phys[(desc)->index]);
+
+static int exynos_mipi_video_phy_power_on(struct phy *phy)
+{
+ struct video_phy_desc *phy_desc = phy_get_drvdata(phy);
+ struct exynos_mipi_video_phy *state = to_mipi_video_phy(phy_desc);
+
+ return __set_phy_state(state, phy_desc->index, 1);
+}
+
+static int exynos_mipi_video_phy_power_off(struct phy *phy)
+{
+ struct video_phy_desc *phy_desc = phy_get_drvdata(phy);
+ struct exynos_mipi_video_phy *state = to_mipi_video_phy(phy_desc);
+
+ return __set_phy_state(state, phy_desc->index, 1);
+}
+
+static struct phy *exynos_mipi_video_phy_xlate(struct device *dev,
+ struct of_phandle_args *args)
+{
+ struct exynos_mipi_video_phy *state = dev_get_drvdata(dev);
+
+ if (WARN_ON(args->args[0] > EXYNOS_MIPI_PHYS_NUM))
+ return ERR_PTR(-ENODEV);
+
+ return state->phys[args->args[0]].phy;
+}
+
+static struct phy_ops exynos_mipi_video_phy_ops = {
+ .power_on = exynos_mipi_video_phy_power_on,
+ .power_off = exynos_mipi_video_phy_power_off,
+ .owner = THIS_MODULE,
+};
+
+static int exynos_mipi_video_phy_probe(struct platform_device *pdev)
+{
+ struct exynos_mipi_video_phy *state;
+ struct device *dev = &pdev->dev;
+ struct resource *res;
+ struct phy_provider *phy_provider;
+ unsigned int i;
+
+ state = devm_kzalloc(dev, sizeof(*state), GFP_KERNEL);
+ if (!state)
+ return -ENOMEM;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+ state->regs = devm_ioremap_resource(dev, res);
+ if (IS_ERR(state->regs))
+ return PTR_ERR(state->regs);
+
+ dev_set_drvdata(dev, state);
+ spin_lock_init(&state->slock);
+
+ phy_provider = devm_of_phy_provider_register(dev,
+ exynos_mipi_video_phy_xlate);
+ if (IS_ERR(phy_provider))
+ return PTR_ERR(phy_provider);
+
+ for (i = 0; i < EXYNOS_MIPI_PHYS_NUM; i++) {
+ struct phy *phy = devm_phy_create(dev,
+ &exynos_mipi_video_phy_ops, NULL);
+ if (IS_ERR(phy)) {
+ dev_err(dev, "failed to create PHY %d\n", i);
+ return PTR_ERR(phy);
+ }
+
+ state->phys[i].phy = phy;
+ state->phys[i].index = i;
+ phy_set_drvdata(phy, &state->phys[i]);
+ }
+
+ return 0;
+}
+
+static const struct of_device_id exynos_mipi_video_phy_of_match[] = {
+ { .compatible = "samsung,s5pv210-mipi-video-phy" },
+ { },
+};
+MODULE_DEVICE_TABLE(of, exynos_mipi_video_phy_of_match);
+
+static struct platform_driver exynos_mipi_video_phy_driver = {
+ .probe = exynos_mipi_video_phy_probe,
+ .driver = {
+ .of_match_table = exynos_mipi_video_phy_of_match,
+ .name = "exynos-mipi-video-phy",
+ .owner = THIS_MODULE,
+ }
+};
+module_platform_driver(exynos_mipi_video_phy_driver);
+
+MODULE_DESCRIPTION("Samsung S5P/EXYNOS SoC MIPI CSI-2/DSI PHY driver");
+MODULE_AUTHOR("Sylwester Nawrocki <s.nawrocki@samsung.com>");
+MODULE_LICENSE("GPL v2");
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH V5 3/5] [media] exynos4-is: Use the generic MIPI CSIS PHY driver
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs Sylwester Nawrocki
@ 2013-09-28 19:27 ` Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic " Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 5/5] ARM: Samsung: Remove the MIPI PHY setup code Sylwester Nawrocki
4 siblings, 0 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
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>
---
Changes since v4:
- updated to latest version of the PHY framework - removed PHY
labels.
---
drivers/media/platform/exynos4-is/Kconfig | 2 +-
drivers/media/platform/exynos4-is/mipi-csis.c | 13 ++++++++++---
include/linux/platform_data/mipi-csis.h | 9 ---------
3 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 53ad0f0..d2d3b4b 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -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.
diff --git a/drivers/media/platform/exynos4-is/mipi-csis.c b/drivers/media/platform/exynos4-is/mipi-csis.c
index 0914230..9fc2af6 100644
--- a/drivers/media/platform/exynos4-is/mipi-csis.c
+++ b/drivers/media/platform/exynos4-is/mipi-csis.c
@@ -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>
@@ -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
@@ -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];
@@ -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
@@ -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))
@@ -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,
@@ -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 {
diff --git a/include/linux/platform_data/mipi-csis.h b/include/linux/platform_data/mipi-csis.h
index bf34e17..c2fd902 100644
--- a/include/linux/platform_data/mipi-csis.h
+++ b/include/linux/platform_data/mipi-csis.h
@@ -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_ */
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic PHY driver
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
` (2 preceding siblings ...)
2013-09-28 19:27 ` [PATCH V5 3/5] [media] exynos4-is: Use the generic MIPI CSIS PHY driver Sylwester Nawrocki
@ 2013-09-28 19:27 ` Sylwester Nawrocki
2013-10-09 8:32 ` Tomi Valkeinen
2013-09-28 19:27 ` [PATCH V5 5/5] ARM: Samsung: Remove the MIPI PHY setup code Sylwester Nawrocki
4 siblings, 1 reply; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
Use the generic PHY API instead of the platform callback
for the MIPI DSIM DPHY enable/reset control.
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: Donghwa Lee <dh09.lee@samsung.com>
---
Changes since v4:
- PHY label removed from the platform data structure.
---
drivers/video/exynos/Kconfig | 1 +
drivers/video/exynos/exynos_mipi_dsi.c | 19 ++++++++++---------
include/video/exynos_mipi_dsim.h | 5 ++---
3 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig
index 1b035b2..976594d 100644
--- a/drivers/video/exynos/Kconfig
+++ b/drivers/video/exynos/Kconfig
@@ -16,6 +16,7 @@ if EXYNOS_VIDEO
config EXYNOS_MIPI_DSI
bool "EXYNOS MIPI DSI driver support."
depends on ARCH_S5PV210 || ARCH_EXYNOS
+ select GENERIC_PHY
help
This enables support for MIPI-DSI device.
diff --git a/drivers/video/exynos/exynos_mipi_dsi.c b/drivers/video/exynos/exynos_mipi_dsi.c
index 32e5406..00b3a52 100644
--- a/drivers/video/exynos/exynos_mipi_dsi.c
+++ b/drivers/video/exynos/exynos_mipi_dsi.c
@@ -30,6 +30,7 @@
#include <linux/interrupt.h>
#include <linux/kthread.h>
#include <linux/notifier.h>
+#include <linux/phy/phy.h>
#include <linux/regulator/consumer.h>
#include <linux/pm_runtime.h>
#include <linux/err.h>
@@ -156,8 +157,7 @@ static int exynos_mipi_dsi_blank_mode(struct mipi_dsim_device *dsim, int power)
exynos_mipi_regulator_enable(dsim);
/* enable MIPI-DSI PHY. */
- if (dsim->pd->phy_enable)
- dsim->pd->phy_enable(pdev, true);
+ phy_power_on(dsim->phy);
clk_enable(dsim->clock);
@@ -373,6 +373,10 @@ static int exynos_mipi_dsi_probe(struct platform_device *pdev)
return ret;
}
+ dsim->phy = devm_phy_get(&pdev->dev, "dsim");
+ if (IS_ERR(dsim->phy))
+ return PTR_ERR(dsim->phy);
+
dsim->clock = devm_clk_get(&pdev->dev, "dsim0");
if (IS_ERR(dsim->clock)) {
dev_err(&pdev->dev, "failed to get dsim clock source\n");
@@ -439,8 +443,7 @@ static int exynos_mipi_dsi_probe(struct platform_device *pdev)
exynos_mipi_regulator_enable(dsim);
/* enable MIPI-DSI PHY. */
- if (dsim->pd->phy_enable)
- dsim->pd->phy_enable(pdev, true);
+ phy_power_on(dsim->phy);
exynos_mipi_update_cfg(dsim);
@@ -504,9 +507,8 @@ static int exynos_mipi_dsi_suspend(struct device *dev)
if (client_drv && client_drv->suspend)
client_drv->suspend(client_dev);
- /* enable MIPI-DSI PHY. */
- if (dsim->pd->phy_enable)
- dsim->pd->phy_enable(pdev, false);
+ /* disable MIPI-DSI PHY. */
+ phy_power_off(dsim->phy);
clk_disable(dsim->clock);
@@ -536,8 +538,7 @@ static int exynos_mipi_dsi_resume(struct device *dev)
exynos_mipi_regulator_enable(dsim);
/* enable MIPI-DSI PHY. */
- if (dsim->pd->phy_enable)
- dsim->pd->phy_enable(pdev, true);
+ phy_power_on(dsim->phy);
clk_enable(dsim->clock);
diff --git a/include/video/exynos_mipi_dsim.h b/include/video/exynos_mipi_dsim.h
index 89dc88a..6a578f8 100644
--- a/include/video/exynos_mipi_dsim.h
+++ b/include/video/exynos_mipi_dsim.h
@@ -216,6 +216,7 @@ struct mipi_dsim_config {
* automatically.
* @e_clk_src: select byte clock source.
* @pd: pointer to MIPI-DSI driver platform data.
+ * @phy: pointer to the MIPI-DSI PHY
*/
struct mipi_dsim_device {
struct device *dev;
@@ -236,6 +237,7 @@ struct mipi_dsim_device {
bool suspended;
struct mipi_dsim_platform_data *pd;
+ struct phy *phy;
};
/*
@@ -248,7 +250,6 @@ struct mipi_dsim_device {
* @enabled: indicate whether mipi controller got enabled or not.
* @lcd_panel_info: pointer for lcd panel specific structure.
* this structure specifies width, height, timing and polarity and so on.
- * @phy_enable: pointer to a callback controlling D-PHY enable/reset
*/
struct mipi_dsim_platform_data {
char lcd_panel_name[PANEL_NAME_SIZE];
@@ -256,8 +257,6 @@ struct mipi_dsim_platform_data {
struct mipi_dsim_config *dsim_config;
unsigned int enabled;
void *lcd_panel_info;
-
- int (*phy_enable)(struct platform_device *pdev, bool on);
};
/*
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH V5 5/5] ARM: Samsung: Remove the MIPI PHY setup code
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
` (3 preceding siblings ...)
2013-09-28 19:27 ` [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic " Sylwester Nawrocki
@ 2013-09-28 19:27 ` Sylwester Nawrocki
4 siblings, 0 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:27 UTC (permalink / raw)
To: linux-arm-kernel
Generic PHY drivers are used to handle the MIPI CSIS and MIPI DSIM
DPHYs so we can remove now unused code at arch/arm/plat-samsung.
In case there is any board file for S5PV210 platforms using MIPI
CSIS/DSIM (not any upstream currently) it should use the generic
PHY API to bind the PHYs to respective PHY consumer drivers and
a platform device for the PHY provider should be defined.
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: Kukjin Kim <kgene.kim@samsung.com>
---
arch/arm/mach-exynos/include/mach/regs-pmu.h | 5 --
arch/arm/mach-s5pv210/include/mach/regs-clock.h | 4 --
arch/arm/plat-samsung/Kconfig | 5 --
arch/arm/plat-samsung/Makefile | 1 -
arch/arm/plat-samsung/setup-mipiphy.c | 60 -----------------------
5 files changed, 0 insertions(+), 75 deletions(-)
delete mode 100644 arch/arm/plat-samsung/setup-mipiphy.c
diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h
index 57344b7..2cdb63e 100644
--- a/arch/arm/mach-exynos/include/mach/regs-pmu.h
+++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h
@@ -44,11 +44,6 @@
#define S5P_DAC_PHY_CONTROL S5P_PMUREG(0x070C)
#define S5P_DAC_PHY_ENABLE (1 << 0)
-#define S5P_MIPI_DPHY_CONTROL(n) S5P_PMUREG(0x0710 + (n) * 4)
-#define S5P_MIPI_DPHY_ENABLE (1 << 0)
-#define S5P_MIPI_DPHY_SRESETN (1 << 1)
-#define S5P_MIPI_DPHY_MRESETN (1 << 2)
-
#define S5P_INFORM0 S5P_PMUREG(0x0800)
#define S5P_INFORM1 S5P_PMUREG(0x0804)
#define S5P_INFORM2 S5P_PMUREG(0x0808)
diff --git a/arch/arm/mach-s5pv210/include/mach/regs-clock.h b/arch/arm/mach-s5pv210/include/mach/regs-clock.h
index 032de66..e345584 100644
--- a/arch/arm/mach-s5pv210/include/mach/regs-clock.h
+++ b/arch/arm/mach-s5pv210/include/mach/regs-clock.h
@@ -147,10 +147,6 @@
#define S5P_HDMI_PHY_CONTROL S5P_CLKREG(0xE804)
#define S5P_USB_PHY_CONTROL S5P_CLKREG(0xE80C)
#define S5P_DAC_PHY_CONTROL S5P_CLKREG(0xE810)
-#define S5P_MIPI_DPHY_CONTROL(x) S5P_CLKREG(0xE814)
-#define S5P_MIPI_DPHY_ENABLE (1 << 0)
-#define S5P_MIPI_DPHY_SRESETN (1 << 1)
-#define S5P_MIPI_DPHY_MRESETN (1 << 2)
#define S5P_INFORM0 S5P_CLKREG(0xF000)
#define S5P_INFORM1 S5P_CLKREG(0xF004)
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 7dfba93..ec882ad 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -395,11 +395,6 @@ config S3C24XX_PWM
Support for exporting the PWM timer blocks via the pwm device
system
-config S5P_SETUP_MIPIPHY
- bool
- help
- Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices
-
config S3C_SETUP_CAMIF
bool
help
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 498c7c2..9267d29 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -38,7 +38,6 @@ obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o
obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT) += dev-backlight.o
obj-$(CONFIG_S3C_SETUP_CAMIF) += setup-camif.o
-obj-$(CONFIG_S5P_SETUP_MIPIPHY) += setup-mipiphy.o
# DMA support
diff --git a/arch/arm/plat-samsung/setup-mipiphy.c b/arch/arm/plat-samsung/setup-mipiphy.c
deleted file mode 100644
index 66df315..0000000
--- a/arch/arm/plat-samsung/setup-mipiphy.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2011 Samsung Electronics Co., Ltd.
- *
- * S5P - Helper functions for MIPI-CSIS and MIPI-DSIM D-PHY control
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/export.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-#include <mach/regs-clock.h>
-
-static int __s5p_mipi_phy_control(int id, bool on, u32 reset)
-{
- static DEFINE_SPINLOCK(lock);
- void __iomem *addr;
- unsigned long flags;
- u32 cfg;
-
- id = max(0, id);
- if (id > 1)
- return -EINVAL;
-
- addr = S5P_MIPI_DPHY_CONTROL(id);
-
- spin_lock_irqsave(&lock, flags);
-
- cfg = __raw_readl(addr);
- cfg = on ? (cfg | reset) : (cfg & ~reset);
- __raw_writel(cfg, addr);
-
- if (on) {
- cfg |= S5P_MIPI_DPHY_ENABLE;
- } else if (!(cfg & (S5P_MIPI_DPHY_SRESETN |
- S5P_MIPI_DPHY_MRESETN) & ~reset)) {
- cfg &= ~S5P_MIPI_DPHY_ENABLE;
- }
-
- __raw_writel(cfg, addr);
- spin_unlock_irqrestore(&lock, flags);
-
- return 0;
-}
-
-int s5p_csis_phy_enable(int id, bool on)
-{
- return __s5p_mipi_phy_control(id, on, S5P_MIPI_DPHY_SRESETN);
-}
-EXPORT_SYMBOL(s5p_csis_phy_enable);
-
-int s5p_dsim_phy_enable(struct platform_device *pdev, bool on)
-{
- return __s5p_mipi_phy_control(pdev->id, on, S5P_MIPI_DPHY_MRESETN);
-}
-EXPORT_SYMBOL(s5p_dsim_phy_enable);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs
2013-09-28 19:27 ` [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs Sylwester Nawrocki
@ 2013-09-28 19:35 ` Sylwester Nawrocki
0 siblings, 0 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:35 UTC (permalink / raw)
To: linux-arm-kernel
(adding missing devicetree mailing list at Cc)
On 09/28/2013 09:27 PM, Sylwester Nawrocki wrote:
> Add a PHY provider driver for the Samsung S5P/Exynos SoC MIPI CSI-2
> receiver and MIPI DSI transmitter DPHYs.
>
> Signed-off-by: Sylwester Nawrocki<s.nawrocki@samsung.com>
> Signed-off-by: Kyungmin Park<kyungmin.park@samsung.com>
> ---
> Changes since v4:
> - updated to latest version of the PHY framework - removed PHY
> labels.
>
> The individual driver symbols in drivers/phy/Kconfig should
> presumably be prefixed with, e.g. PHY_. This is something that
> perhaps could be done as a follow up patch.
> ---
> .../devicetree/bindings/phy/samsung-phy.txt | 14 ++
> drivers/phy/Kconfig | 6 +
> drivers/phy/Makefile | 7 +-
> drivers/phy/phy-exynos-mipi-video.c | 176 ++++++++++++++++++++
> 4 files changed, 200 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/phy/samsung-phy.txt
> create mode 100644 drivers/phy/phy-exynos-mipi-video.c
>
> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt
> new file mode 100644
> index 0000000..5ff208c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt
> @@ -0,0 +1,14 @@
> +Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY
> +-------------------------------------------------
> +
> +Required properties:
> +- compatible : should be "samsung,s5pv210-mipi-video-phy";
> +- reg : offset and length of the MIPI DPHY register set;
> +- #phy-cells : from the generic phy bindings, must be 1;
> +
> +For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in
> +the PHY specifier identifies the PHY and its meaning is as follows:
> + 0 - MIPI CSIS 0,
> + 1 - MIPI DSIM 0,
> + 2 - MIPI CSIS 1,
> + 3 - MIPI DSIM 1.
> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
> index ac239ac..0062d7e 100644
> --- a/drivers/phy/Kconfig
> +++ b/drivers/phy/Kconfig
> @@ -15,6 +15,12 @@ config GENERIC_PHY
> phy users can obtain reference to the PHY. All the users of this
> framework should select this config.
>
> +config PHY_EXYNOS_MIPI_VIDEO
> + tristate "S5P/EXYNOS SoC series MIPI CSI-2/DSI PHY driver"
> + help
> + Support for MIPI CSI-2 and MIPI DSI DPHY found on Samsung S5P
> + and EXYNOS SoCs.
> +
> config OMAP_USB2
> tristate "OMAP USB2 PHY Driver"
> depends on ARCH_OMAP2PLUS
> diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
> index 0dd8a98..6344053 100644
> --- a/drivers/phy/Makefile
> +++ b/drivers/phy/Makefile
> @@ -2,6 +2,7 @@
> # Makefile for the phy drivers.
> #
>
> -obj-$(CONFIG_GENERIC_PHY) += phy-core.o
> -obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o
> -obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o
> +obj-$(CONFIG_GENERIC_PHY) += phy-core.o
> +obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
> +obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o
> +obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o
> diff --git a/drivers/phy/phy-exynos-mipi-video.c b/drivers/phy/phy-exynos-mipi-video.c
> new file mode 100644
> index 0000000..b73b86a
> --- /dev/null
> +++ b/drivers/phy/phy-exynos-mipi-video.c
> @@ -0,0 +1,176 @@
> +/*
> + * Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY driver
> + *
> + * Copyright (C) 2013 Samsung Electronics Co., Ltd.
> + * Author: Sylwester Nawrocki<s.nawrocki@samsung.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include<linux/io.h>
> +#include<linux/kernel.h>
> +#include<linux/module.h>
> +#include<linux/of.h>
> +#include<linux/of_address.h>
> +#include<linux/phy/phy.h>
> +#include<linux/platform_device.h>
> +#include<linux/spinlock.h>
> +
> +/* MIPI_PHYn_CONTROL register offset: n = 0..1 */
> +#define EXYNOS_MIPI_PHY_CONTROL(n) ((n) * 4)
> +#define EXYNOS_MIPI_PHY_ENABLE (1<< 0)
> +#define EXYNOS_MIPI_PHY_SRESETN (1<< 1)
> +#define EXYNOS_MIPI_PHY_MRESETN (1<< 2)
> +#define EXYNOS_MIPI_PHY_RESET_MASK (3<< 1)
> +
> +enum exynos_mipi_phy_id {
> + EXYNOS_MIPI_PHY_ID_CSIS0,
> + EXYNOS_MIPI_PHY_ID_DSIM0,
> + EXYNOS_MIPI_PHY_ID_CSIS1,
> + EXYNOS_MIPI_PHY_ID_DSIM1,
> + EXYNOS_MIPI_PHYS_NUM
> +};
> +
> +#define is_mipi_dsim_phy_id(id) \
> + ((id) = EXYNOS_MIPI_PHY_ID_DSIM0 || (id) = EXYNOS_MIPI_PHY_ID_DSIM1)
> +
> +struct exynos_mipi_video_phy {
> + spinlock_t slock;
> + struct video_phy_desc {
> + struct phy *phy;
> + unsigned int index;
> + } phys[EXYNOS_MIPI_PHYS_NUM];
> + void __iomem *regs;
> +};
> +
> +static int __set_phy_state(struct exynos_mipi_video_phy *state,
> + enum exynos_mipi_phy_id id, unsigned int on)
> +{
> + void __iomem *addr;
> + u32 reg, reset;
> +
> + addr = state->regs + EXYNOS_MIPI_PHY_CONTROL(id / 2);
> +
> + if (is_mipi_dsim_phy_id(id))
> + reset = EXYNOS_MIPI_PHY_MRESETN;
> + else
> + reset = EXYNOS_MIPI_PHY_SRESETN;
> +
> + spin_lock(&state->slock);
> + reg = readl(addr);
> + if (on)
> + reg |= reset;
> + else
> + reg&= ~reset;
> + writel(reg, addr);
> +
> + /* Clear ENABLE bit only if MRESETN, SRESETN bits are not set. */
> + if (on)
> + reg |= EXYNOS_MIPI_PHY_ENABLE;
> + else if (!(reg& EXYNOS_MIPI_PHY_RESET_MASK))
> + reg&= ~EXYNOS_MIPI_PHY_ENABLE;
> +
> + writel(reg, addr);
> + spin_unlock(&state->slock);
> + return 0;
> +}
> +
> +#define to_mipi_video_phy(desc) \
> + container_of((desc), struct exynos_mipi_video_phy, phys[(desc)->index]);
> +
> +static int exynos_mipi_video_phy_power_on(struct phy *phy)
> +{
> + struct video_phy_desc *phy_desc = phy_get_drvdata(phy);
> + struct exynos_mipi_video_phy *state = to_mipi_video_phy(phy_desc);
> +
> + return __set_phy_state(state, phy_desc->index, 1);
> +}
> +
> +static int exynos_mipi_video_phy_power_off(struct phy *phy)
> +{
> + struct video_phy_desc *phy_desc = phy_get_drvdata(phy);
> + struct exynos_mipi_video_phy *state = to_mipi_video_phy(phy_desc);
> +
> + return __set_phy_state(state, phy_desc->index, 1);
> +}
> +
> +static struct phy *exynos_mipi_video_phy_xlate(struct device *dev,
> + struct of_phandle_args *args)
> +{
> + struct exynos_mipi_video_phy *state = dev_get_drvdata(dev);
> +
> + if (WARN_ON(args->args[0]> EXYNOS_MIPI_PHYS_NUM))
> + return ERR_PTR(-ENODEV);
> +
> + return state->phys[args->args[0]].phy;
> +}
> +
> +static struct phy_ops exynos_mipi_video_phy_ops = {
> + .power_on = exynos_mipi_video_phy_power_on,
> + .power_off = exynos_mipi_video_phy_power_off,
> + .owner = THIS_MODULE,
> +};
> +
> +static int exynos_mipi_video_phy_probe(struct platform_device *pdev)
> +{
> + struct exynos_mipi_video_phy *state;
> + struct device *dev =&pdev->dev;
> + struct resource *res;
> + struct phy_provider *phy_provider;
> + unsigned int i;
> +
> + state = devm_kzalloc(dev, sizeof(*state), GFP_KERNEL);
> + if (!state)
> + return -ENOMEM;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +
> + state->regs = devm_ioremap_resource(dev, res);
> + if (IS_ERR(state->regs))
> + return PTR_ERR(state->regs);
> +
> + dev_set_drvdata(dev, state);
> + spin_lock_init(&state->slock);
> +
> + phy_provider = devm_of_phy_provider_register(dev,
> + exynos_mipi_video_phy_xlate);
> + if (IS_ERR(phy_provider))
> + return PTR_ERR(phy_provider);
> +
> + for (i = 0; i< EXYNOS_MIPI_PHYS_NUM; i++) {
> + struct phy *phy = devm_phy_create(dev,
> + &exynos_mipi_video_phy_ops, NULL);
> + if (IS_ERR(phy)) {
> + dev_err(dev, "failed to create PHY %d\n", i);
> + return PTR_ERR(phy);
> + }
> +
> + state->phys[i].phy = phy;
> + state->phys[i].index = i;
> + phy_set_drvdata(phy,&state->phys[i]);
> + }
> +
> + return 0;
> +}
> +
> +static const struct of_device_id exynos_mipi_video_phy_of_match[] = {
> + { .compatible = "samsung,s5pv210-mipi-video-phy" },
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, exynos_mipi_video_phy_of_match);
> +
> +static struct platform_driver exynos_mipi_video_phy_driver = {
> + .probe = exynos_mipi_video_phy_probe,
> + .driver = {
> + .of_match_table = exynos_mipi_video_phy_of_match,
> + .name = "exynos-mipi-video-phy",
> + .owner = THIS_MODULE,
> + }
> +};
> +module_platform_driver(exynos_mipi_video_phy_driver);
> +
> +MODULE_DESCRIPTION("Samsung S5P/EXYNOS SoC MIPI CSI-2/DSI PHY driver");
> +MODULE_AUTHOR("Sylwester Nawrocki<s.nawrocki@samsung.com>");
> +MODULE_LICENSE("GPL v2");
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
@ 2013-09-28 19:37 ` Sylwester Nawrocki
2013-10-01 5:40 ` Kishon Vijay Abraham I
1 sibling, 0 replies; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-09-28 19:37 UTC (permalink / raw)
To: linux-arm-kernel
(adding missing devicetree mailing list at Cc)
On 09/28/2013 09:27 PM, Sylwester Nawrocki wrote:
> Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>
> 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>
> ---
> arch/arm/boot/dts/exynos4.dtsi | 10 ++++++++++
> 1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
> index caadc02..a73eeb5 100644
> --- a/arch/arm/boot/dts/exynos4.dtsi
> +++ b/arch/arm/boot/dts/exynos4.dtsi
> @@ -49,6 +49,12 @@
> reg =<0x10000000 0x100>;
> };
>
> + mipi_phy: video-phy@10020710 {
> + compatible = "samsung,s5pv210-mipi-video-phy";
> + reg =<0x10020710 8>;
> + #phy-cells =<1>;
> + };
> +
> pd_mfc: mfc-power-domain@10023C40 {
> compatible = "samsung,exynos4210-pd";
> reg =<0x10023C40 0x20>;
> @@ -161,6 +167,8 @@
> clock-names = "csis", "sclk_csis";
> bus-width =<4>;
> samsung,power-domain =<&pd_cam>;
> + phys =<&mipi_phy 0>;
> + phy-names = "csis";
> status = "disabled";
> #address-cells =<1>;
> #size-cells =<0>;
> @@ -174,6 +182,8 @@
> clock-names = "csis", "sclk_csis";
> bus-width =<2>;
> samsung,power-domain =<&pd_cam>;
> + phys =<&mipi_phy 2>;
> + phy-names = "csis";
> status = "disabled";
> #address-cells =<1>;
> #size-cells =<0>;
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
2013-09-28 19:37 ` Sylwester Nawrocki
@ 2013-10-01 5:40 ` Kishon Vijay Abraham I
2013-10-01 14:13 ` Sylwester Nawrocki
1 sibling, 1 reply; 14+ messages in thread
From: Kishon Vijay Abraham I @ 2013-10-01 5:40 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
On Sunday 29 September 2013 12:57 AM, Sylwester Nawrocki wrote:
> Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>
> 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>
Can this patch be taken through exynos dt tree?
Thanks
Kishon
> ---
> arch/arm/boot/dts/exynos4.dtsi | 10 ++++++++++
> 1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
> index caadc02..a73eeb5 100644
> --- a/arch/arm/boot/dts/exynos4.dtsi
> +++ b/arch/arm/boot/dts/exynos4.dtsi
> @@ -49,6 +49,12 @@
> reg = <0x10000000 0x100>;
> };
>
> + mipi_phy: video-phy@10020710 {
> + compatible = "samsung,s5pv210-mipi-video-phy";
> + reg = <0x10020710 8>;
> + #phy-cells = <1>;
> + };
> +
> pd_mfc: mfc-power-domain@10023C40 {
> compatible = "samsung,exynos4210-pd";
> reg = <0x10023C40 0x20>;
> @@ -161,6 +167,8 @@
> clock-names = "csis", "sclk_csis";
> bus-width = <4>;
> samsung,power-domain = <&pd_cam>;
> + phys = <&mipi_phy 0>;
> + phy-names = "csis";
> status = "disabled";
> #address-cells = <1>;
> #size-cells = <0>;
> @@ -174,6 +182,8 @@
> clock-names = "csis", "sclk_csis";
> bus-width = <2>;
> samsung,power-domain = <&pd_cam>;
> + phys = <&mipi_phy 2>;
> + phy-names = "csis";
> status = "disabled";
> #address-cells = <1>;
> #size-cells = <0>;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-10-01 5:40 ` Kishon Vijay Abraham I
@ 2013-10-01 14:13 ` Sylwester Nawrocki
2013-10-01 15:38 ` Kishon Vijay Abraham I
0 siblings, 1 reply; 14+ messages in thread
From: Sylwester Nawrocki @ 2013-10-01 14:13 UTC (permalink / raw)
To: linux-arm-kernel
On 10/01/2013 07:28 AM, Kishon Vijay Abraham I wrote:
> On Sunday 29 September 2013 12:57 AM, Sylwester Nawrocki wrote:
>> > Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>> >
>> > 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>
>
> Can this patch be taken through exynos dt tree?
Yes, that makes more sense indeed. Kukjin, would you mind taking
this patch to your tree ?
Thanks,
Sylwester
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-10-01 14:13 ` Sylwester Nawrocki
@ 2013-10-01 15:38 ` Kishon Vijay Abraham I
2013-10-06 0:09 ` Kukjin Kim
0 siblings, 1 reply; 14+ messages in thread
From: Kishon Vijay Abraham I @ 2013-10-01 15:38 UTC (permalink / raw)
To: linux-arm-kernel
On Wednesday 02 October 2013 02:43 AM, Sylwester Nawrocki wrote:
> On 10/01/2013 07:28 AM, Kishon Vijay Abraham I wrote:
>> On Sunday 29 September 2013 12:57 AM, Sylwester Nawrocki wrote:
>>> > Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>>> >
>>> > 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>
>>
>> Can this patch be taken through exynos dt tree?
>
> Yes, that makes more sense indeed. Kukjin, would you mind taking
> this patch to your tree ?
FWIW
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
>
> Thanks,
> Sylwester
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-10-01 15:38 ` Kishon Vijay Abraham I
@ 2013-10-06 0:09 ` Kukjin Kim
2013-10-06 0:11 ` Kukjin Kim
0 siblings, 1 reply; 14+ messages in thread
From: Kukjin Kim @ 2013-10-06 0:09 UTC (permalink / raw)
To: linux-arm-kernel
On 10/02/13 00:26, Kishon Vijay Abraham I wrote:
> On Wednesday 02 October 2013 02:43 AM, Sylwester Nawrocki wrote:
>> On 10/01/2013 07:28 AM, Kishon Vijay Abraham I wrote:
>>> On Sunday 29 September 2013 12:57 AM, Sylwester Nawrocki wrote:
>>>>> Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>>>>>
>>>>> 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>
>>>
>>> Can this patch be taken through exynos dt tree?
>>
>> Yes, that makes more sense indeed. Kukjin, would you mind taking
>> this patch to your tree ?
>
Sure. Applied this whole series.
> FWIW
> Acked-by: Kishon Vijay Abraham I<kishon@ti.com>
>>
Thanks,
Kukjin
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi
2013-10-06 0:09 ` Kukjin Kim
@ 2013-10-06 0:11 ` Kukjin Kim
0 siblings, 0 replies; 14+ messages in thread
From: Kukjin Kim @ 2013-10-06 0:11 UTC (permalink / raw)
To: linux-arm-kernel
On 10/06/13 09:09, Kukjin Kim wrote:
>
> On 10/02/13 00:26, Kishon Vijay Abraham I wrote:
>> On Wednesday 02 October 2013 02:43 AM, Sylwester Nawrocki wrote:
>>> On 10/01/2013 07:28 AM, Kishon Vijay Abraham I wrote:
>>>> On Sunday 29 September 2013 12:57 AM, Sylwester Nawrocki wrote:
>>>>>> Add PHY provider node for the MIPI CSIS and MIPI DSIM PHYs.
>>>>>>
>>>>>> 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>
>>>>
>>>> Can this patch be taken through exynos dt tree?
>>>
>>> Yes, that makes more sense indeed. Kukjin, would you mind taking
>>> this patch to your tree ?
>>
> Sure. Applied this whole series.
>
Oops, sorry. Only this patch ;-)
>> FWIW
>> Acked-by: Kishon Vijay Abraham I<kishon@ti.com>
>>>
Thanks,
Kukjin
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic PHY driver
2013-09-28 19:27 ` [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic " Sylwester Nawrocki
@ 2013-10-09 8:32 ` Tomi Valkeinen
0 siblings, 0 replies; 14+ messages in thread
From: Tomi Valkeinen @ 2013-10-09 8:32 UTC (permalink / raw)
To: linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 760 bytes --]
On 28/09/13 22:27, Sylwester Nawrocki wrote:
> Use the generic PHY API instead of the platform callback
> for the MIPI DSIM DPHY enable/reset control.
>
> 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: Donghwa Lee <dh09.lee@samsung.com>
> ---
> Changes since v4:
> - PHY label removed from the platform data structure.
> ---
> drivers/video/exynos/Kconfig | 1 +
> drivers/video/exynos/exynos_mipi_dsi.c | 19 ++++++++++---------
> include/video/exynos_mipi_dsim.h | 5 ++---
> 3 files changed, 13 insertions(+), 12 deletions(-)
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-10-09 8:32 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-28 19:27 [PATCH V5 0/5] Generic PHY driver for the Exynos SoC MIPI CSI-2/DSI DPHYs Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 1/5] ARM: dts: Add MIPI PHY node to exynos4.dtsi Sylwester Nawrocki
2013-09-28 19:37 ` Sylwester Nawrocki
2013-10-01 5:40 ` Kishon Vijay Abraham I
2013-10-01 14:13 ` Sylwester Nawrocki
2013-10-01 15:38 ` Kishon Vijay Abraham I
2013-10-06 0:09 ` Kukjin Kim
2013-10-06 0:11 ` Kukjin Kim
2013-09-28 19:27 ` [PATCH V5 2/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs Sylwester Nawrocki
2013-09-28 19:35 ` Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 3/5] [media] exynos4-is: Use the generic MIPI CSIS PHY driver Sylwester Nawrocki
2013-09-28 19:27 ` [PATCH V5 4/5] video: exynos_mipi_dsim: Use the generic " Sylwester Nawrocki
2013-10-09 8:32 ` Tomi Valkeinen
2013-09-28 19:27 ` [PATCH V5 5/5] ARM: Samsung: Remove the MIPI PHY setup code Sylwester Nawrocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).