* [PATCH v2 0/2] Support exynosautov9 ufs phy driver
[not found] <CGME20210706020608epcas2p1ff6e0073edfa43de92ebd6c754df18cf@epcas2p1.samsung.com>
@ 2021-07-06 2:06 ` Chanho Park
[not found] ` <CGME20210706020609epcas2p3af9ad22d849366dd850214b5c2e9f9dd@epcas2p3.samsung.com>
[not found] ` <CGME20210706020611epcas2p47fd1367425d1bac79c7ec983c21086b8@epcas2p4.samsung.com>
0 siblings, 2 replies; 6+ messages in thread
From: Chanho Park @ 2021-07-06 2:06 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul, Krzysztof Kozlowski
Cc: Marek Szyprowski, Jaehoon Chung, Alim Akhtar, linux-phy, Chanho Park
This patchset introduces ExynosAuto v9 SoC ufs phy driver as Generic PHY
driver framework. According to Krzysztof's suggestion, this patchset
moves phy-exynos7-ufs header to c source file.
Changes from v1:
- squashed "custom PHY_TRSV_CH_OFFSET support" patch
- use "exynosautov9" instead of "exynosauto" to avoid confusion with
exynosauto 8890
- move phy-exynos7-ufs.h to phy-exynos7-ufs.c
- s/exynosauto/exynosautov9/g
Chanho Park (2):
phy: samsung-ufs: move phy-exynos7-ufs header
phy: samsung-ufs: support exynosauto ufs phy driver
.../bindings/phy/samsung,ufs-phy.yaml | 1 +
drivers/phy/samsung/Makefile | 4 +-
.../{phy-exynos7-ufs.h => phy-exynos7-ufs.c} | 11 ++-
drivers/phy/samsung/phy-exynosautov9-ufs.c | 70 +++++++++++++++++++
drivers/phy/samsung/phy-samsung-ufs.c | 3 +
drivers/phy/samsung/phy-samsung-ufs.h | 12 +++-
6 files changed, 91 insertions(+), 10 deletions(-)
rename drivers/phy/samsung/{phy-exynos7-ufs.h => phy-exynos7-ufs.c} (93%)
create mode 100644 drivers/phy/samsung/phy-exynosautov9-ufs.c
--
2.32.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] phy: samsung-ufs: move phy-exynos7-ufs header
[not found] ` <CGME20210706020609epcas2p3af9ad22d849366dd850214b5c2e9f9dd@epcas2p3.samsung.com>
@ 2021-07-06 2:06 ` Chanho Park
2021-07-06 2:10 ` Jaehoon Chung
0 siblings, 1 reply; 6+ messages in thread
From: Chanho Park @ 2021-07-06 2:06 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul, Krzysztof Kozlowski
Cc: Marek Szyprowski, Jaehoon Chung, Alim Akhtar, linux-phy,
Chanho Park, Krzysztof Kozlowski
Instead of using exynos7 ufs definition in phy-exynos7-ufs.h, we should
put it into phy-exynos7-ufs.c to be included different objects or units.
Change-Id: Iddd3662445fe5373c254f994045b451b443fb91c
Suggested-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
drivers/phy/samsung/Makefile | 3 ++-
.../samsung/{phy-exynos7-ufs.h => phy-exynos7-ufs.c} | 11 +++++------
drivers/phy/samsung/phy-samsung-ufs.h | 4 +++-
3 files changed, 10 insertions(+), 8 deletions(-)
rename drivers/phy/samsung/{phy-exynos7-ufs.h => phy-exynos7-ufs.c} (93%)
diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile
index 3959100fe8a2..d55d9aa5b932 100644
--- a/drivers/phy/samsung/Makefile
+++ b/drivers/phy/samsung/Makefile
@@ -2,7 +2,8 @@
obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
obj-$(CONFIG_PHY_EXYNOS_PCIE) += phy-exynos-pcie.o
-obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o
+obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o \
+ phy-exynos7-ufs.o
obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o
phy-exynos-usb2-y += phy-samsung-usb2.o
phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o
diff --git a/drivers/phy/samsung/phy-exynos7-ufs.h b/drivers/phy/samsung/phy-exynos7-ufs.c
similarity index 93%
rename from drivers/phy/samsung/phy-exynos7-ufs.h
rename to drivers/phy/samsung/phy-exynos7-ufs.c
index 518923141958..657b58319c14 100644
--- a/drivers/phy/samsung/phy-exynos7-ufs.h
+++ b/drivers/phy/samsung/phy-exynos7-ufs.c
@@ -1,11 +1,12 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
+// SPDX-License-Identifier: GPL-2.0-only
/*
* UFS PHY driver data for Samsung EXYNOS7 SoC
*
* Copyright (C) 2020 Samsung Electronics Co., Ltd.
*/
-#ifndef _PHY_EXYNOS7_UFS_H_
-#define _PHY_EXYNOS7_UFS_H_
+
+#include <linux/io.h>
+#include <linux/phy/phy.h>
#include "phy-samsung-ufs.h"
@@ -68,7 +69,7 @@ static const struct samsung_ufs_phy_cfg *exynos7_ufs_phy_cfgs[CFG_TAG_MAX] = {
[CFG_POST_PWR_HS] = exynos7_post_pwr_hs_cfg,
};
-static struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
+const struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
.cfg = exynos7_ufs_phy_cfgs,
.isol = {
.offset = EXYNOS7_EMBEDDED_COMBO_PHY_CTRL,
@@ -77,5 +78,3 @@ static struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
},
.has_symbol_clk = 1,
};
-
-#endif /* _PHY_EXYNOS7_UFS_H_ */
diff --git a/drivers/phy/samsung/phy-samsung-ufs.h b/drivers/phy/samsung/phy-samsung-ufs.h
index 5de78710524c..1532d239ff0e 100644
--- a/drivers/phy/samsung/phy-samsung-ufs.h
+++ b/drivers/phy/samsung/phy-samsung-ufs.h
@@ -10,6 +10,8 @@
#ifndef _PHY_SAMSUNG_UFS_
#define _PHY_SAMSUNG_UFS_
+#include <linux/regmap.h>
+
#define PHY_COMN_BLK 1
#define PHY_TRSV_BLK 2
#define END_UFS_PHY_CFG { 0 }
@@ -134,6 +136,6 @@ static inline void samsung_ufs_phy_ctrl_isol(
phy->isol->mask, isol ? 0 : phy->isol->en);
}
-#include "phy-exynos7-ufs.h"
+extern const struct samsung_ufs_phy_drvdata exynos7_ufs_phy;
#endif /* _PHY_SAMSUNG_UFS_ */
--
2.32.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] phy: samsung-ufs: support exynosauto ufs phy driver
[not found] ` <CGME20210706020611epcas2p47fd1367425d1bac79c7ec983c21086b8@epcas2p4.samsung.com>
@ 2021-07-06 2:06 ` Chanho Park
2021-07-06 2:09 ` Jaehoon Chung
0 siblings, 1 reply; 6+ messages in thread
From: Chanho Park @ 2021-07-06 2:06 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul, Krzysztof Kozlowski
Cc: Marek Szyprowski, Jaehoon Chung, Alim Akhtar, linux-phy, Chanho Park
This patch adds to support phy-exynosautov9-ufs driver for ExynosAuto v9
series SoCs. The patch adds "samsung,exynosautov9-ufs-phy" compatible.
Unlike previous exynos ufs phy, the chip uses 0x50 offset as
PHY_TRSV_REG_CFG_OFFSET.
Change-Id: I4ea333d4565af537c26a8876d1b27144eea3c3c6
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
.../bindings/phy/samsung,ufs-phy.yaml | 1 +
drivers/phy/samsung/Makefile | 3 +-
drivers/phy/samsung/phy-exynosautov9-ufs.c | 70 +++++++++++++++++++
drivers/phy/samsung/phy-samsung-ufs.c | 3 +
drivers/phy/samsung/phy-samsung-ufs.h | 8 ++-
5 files changed, 82 insertions(+), 3 deletions(-)
create mode 100644 drivers/phy/samsung/phy-exynosautov9-ufs.c
diff --git a/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml b/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
index 636cc501b54f..f6ed1a005e7a 100644
--- a/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
@@ -16,6 +16,7 @@ properties:
compatible:
enum:
- samsung,exynos7-ufs-phy
+ - samsung,exynosautov9-ufs-phy
reg:
maxItems: 1
diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile
index d55d9aa5b932..ab87b71cd90f 100644
--- a/drivers/phy/samsung/Makefile
+++ b/drivers/phy/samsung/Makefile
@@ -3,7 +3,8 @@ obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
obj-$(CONFIG_PHY_EXYNOS_PCIE) += phy-exynos-pcie.o
obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o \
- phy-exynos7-ufs.o
+ phy-exynos7-ufs.o \
+ phy-exynosautov9-ufs.o
obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o
phy-exynos-usb2-y += phy-samsung-usb2.o
phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o
diff --git a/drivers/phy/samsung/phy-exynosautov9-ufs.c b/drivers/phy/samsung/phy-exynosautov9-ufs.c
new file mode 100644
index 000000000000..9ab79e018724
--- /dev/null
+++ b/drivers/phy/samsung/phy-exynosautov9-ufs.c
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * UFS PHY driver data for Samsung EXYNOSAUTO v9 SoC
+ *
+ * Copyright (C) 2021 Samsung Electronics Co., Ltd.
+ */
+
+#include <linux/io.h>
+#include <linux/phy/phy.h>
+
+#include "phy-samsung-ufs.h"
+
+#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL 0x728
+#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_MASK 0x1
+#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_EN BIT(0)
+
+#define PHY_TRSV_REG_CFG_AUTOV9(o, v, d) \
+ PHY_TRSV_REG_CFG_OFFSET(o, v, d, 0x50)
+
+/* Calibration for phy initialization */
+static const struct samsung_ufs_phy_cfg exynosautov9_pre_init_cfg[] = {
+ PHY_COMN_REG_CFG(0x023, 0x80, PWR_MODE_ANY),
+ PHY_COMN_REG_CFG(0x01d, 0x10, PWR_MODE_ANY),
+
+ PHY_TRSV_REG_CFG_AUTOV9(0x044, 0xb5, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x04d, 0x43, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x05b, 0x20, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x05e, 0xc0, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x038, 0x12, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x059, 0x58, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x06c, 0x18, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG_AUTOV9(0x06d, 0x02, PWR_MODE_ANY),
+
+ PHY_COMN_REG_CFG(0x023, 0xc0, PWR_MODE_ANY),
+ PHY_COMN_REG_CFG(0x023, 0x00, PWR_MODE_ANY),
+
+ PHY_TRSV_REG_CFG(0x042, 0x5d, PWR_MODE_ANY),
+ PHY_TRSV_REG_CFG(0x043, 0x80, PWR_MODE_ANY),
+
+ END_UFS_PHY_CFG,
+};
+
+/* Calibration for HS mode series A/B */
+static const struct samsung_ufs_phy_cfg exynosautov9_pre_pwr_hs_cfg[] = {
+ PHY_TRSV_REG_CFG(0x032, 0xbc, PWR_MODE_HS_ANY),
+ PHY_TRSV_REG_CFG(0x03c, 0x7f, PWR_MODE_HS_ANY),
+ PHY_TRSV_REG_CFG(0x048, 0xc0, PWR_MODE_HS_ANY),
+
+ PHY_TRSV_REG_CFG(0x04a, 0x00, PWR_MODE_HS_G3_SER_B),
+ PHY_TRSV_REG_CFG(0x04b, 0x10, PWR_MODE_HS_G1_SER_B |
+ PWR_MODE_HS_G3_SER_B),
+ PHY_TRSV_REG_CFG(0x04d, 0x63, PWR_MODE_HS_G3_SER_B),
+
+ END_UFS_PHY_CFG,
+};
+
+static const struct samsung_ufs_phy_cfg *exynosautov9_ufs_phy_cfgs[CFG_TAG_MAX] = {
+ [CFG_PRE_INIT] = exynosautov9_pre_init_cfg,
+ [CFG_PRE_PWR_HS] = exynosautov9_pre_pwr_hs_cfg,
+};
+
+const struct samsung_ufs_phy_drvdata exynosautov9_ufs_phy = {
+ .cfg = exynosautov9_ufs_phy_cfgs,
+ .isol = {
+ .offset = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL,
+ .mask = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_MASK,
+ .en = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_EN,
+ },
+ .has_symbol_clk = 0,
+};
diff --git a/drivers/phy/samsung/phy-samsung-ufs.c b/drivers/phy/samsung/phy-samsung-ufs.c
index dd9ab1519d83..602ddef259eb 100644
--- a/drivers/phy/samsung/phy-samsung-ufs.c
+++ b/drivers/phy/samsung/phy-samsung-ufs.c
@@ -347,6 +347,9 @@ static const struct of_device_id samsung_ufs_phy_match[] = {
{
.compatible = "samsung,exynos7-ufs-phy",
.data = &exynos7_ufs_phy,
+ }, {
+ .compatible = "samsung,exynosautov9-ufs-phy",
+ .data = &exynosautov9_ufs_phy,
},
{},
};
diff --git a/drivers/phy/samsung/phy-samsung-ufs.h b/drivers/phy/samsung/phy-samsung-ufs.h
index 1532d239ff0e..b9b85d55a2d5 100644
--- a/drivers/phy/samsung/phy-samsung-ufs.h
+++ b/drivers/phy/samsung/phy-samsung-ufs.h
@@ -26,14 +26,17 @@
.id = PHY_COMN_BLK, \
}
-#define PHY_TRSV_REG_CFG(o, v, d) { \
+#define PHY_TRSV_REG_CFG_OFFSET(o, v, d, c) { \
.off_0 = PHY_APB_ADDR((o)), \
- .off_1 = PHY_APB_ADDR((o) + PHY_TRSV_CH_OFFSET), \
+ .off_1 = PHY_APB_ADDR((o) + (c)), \
.val = (v), \
.desc = (d), \
.id = PHY_TRSV_BLK, \
}
+#define PHY_TRSV_REG_CFG(o, v, d) \
+ PHY_TRSV_REG_CFG_OFFSET(o, v, d, PHY_TRSV_CH_OFFSET)
+
/* UFS PHY registers */
#define PHY_PLL_LOCK_STATUS 0x1e
#define PHY_CDR_LOCK_STATUS 0x5e
@@ -137,5 +140,6 @@ static inline void samsung_ufs_phy_ctrl_isol(
}
extern const struct samsung_ufs_phy_drvdata exynos7_ufs_phy;
+extern const struct samsung_ufs_phy_drvdata exynosautov9_ufs_phy;
#endif /* _PHY_SAMSUNG_UFS_ */
--
2.32.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] phy: samsung-ufs: support exynosauto ufs phy driver
2021-07-06 2:06 ` [PATCH v2 2/2] phy: samsung-ufs: support exynosauto ufs phy driver Chanho Park
@ 2021-07-06 2:09 ` Jaehoon Chung
0 siblings, 0 replies; 6+ messages in thread
From: Jaehoon Chung @ 2021-07-06 2:09 UTC (permalink / raw)
To: Chanho Park, Kishon Vijay Abraham I, Vinod Koul, Krzysztof Kozlowski
Cc: Marek Szyprowski, Alim Akhtar, linux-phy
On 7/6/21 11:06 AM, Chanho Park wrote:
> This patch adds to support phy-exynosautov9-ufs driver for ExynosAuto v9
> series SoCs. The patch adds "samsung,exynosautov9-ufs-phy" compatible.
> Unlike previous exynos ufs phy, the chip uses 0x50 offset as
> PHY_TRSV_REG_CFG_OFFSET.
>
> Change-Id: I4ea333d4565af537c26a8876d1b27144eea3c3c6
Remove Change-Id.
Best Regards,
Jaehoon Chung
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> .../bindings/phy/samsung,ufs-phy.yaml | 1 +
> drivers/phy/samsung/Makefile | 3 +-
> drivers/phy/samsung/phy-exynosautov9-ufs.c | 70 +++++++++++++++++++
> drivers/phy/samsung/phy-samsung-ufs.c | 3 +
> drivers/phy/samsung/phy-samsung-ufs.h | 8 ++-
> 5 files changed, 82 insertions(+), 3 deletions(-)
> create mode 100644 drivers/phy/samsung/phy-exynosautov9-ufs.c
>
> diff --git a/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml b/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
> index 636cc501b54f..f6ed1a005e7a 100644
> --- a/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml
> @@ -16,6 +16,7 @@ properties:
> compatible:
> enum:
> - samsung,exynos7-ufs-phy
> + - samsung,exynosautov9-ufs-phy
>
> reg:
> maxItems: 1
> diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile
> index d55d9aa5b932..ab87b71cd90f 100644
> --- a/drivers/phy/samsung/Makefile
> +++ b/drivers/phy/samsung/Makefile
> @@ -3,7 +3,8 @@ obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
> obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
> obj-$(CONFIG_PHY_EXYNOS_PCIE) += phy-exynos-pcie.o
> obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o \
> - phy-exynos7-ufs.o
> + phy-exynos7-ufs.o \
> + phy-exynosautov9-ufs.o
> obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o
> phy-exynos-usb2-y += phy-samsung-usb2.o
> phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o
> diff --git a/drivers/phy/samsung/phy-exynosautov9-ufs.c b/drivers/phy/samsung/phy-exynosautov9-ufs.c
> new file mode 100644
> index 000000000000..9ab79e018724
> --- /dev/null
> +++ b/drivers/phy/samsung/phy-exynosautov9-ufs.c
> @@ -0,0 +1,70 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * UFS PHY driver data for Samsung EXYNOSAUTO v9 SoC
> + *
> + * Copyright (C) 2021 Samsung Electronics Co., Ltd.
> + */
> +
> +#include <linux/io.h>
> +#include <linux/phy/phy.h>
> +
> +#include "phy-samsung-ufs.h"
> +
> +#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL 0x728
> +#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_MASK 0x1
> +#define EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_EN BIT(0)
> +
> +#define PHY_TRSV_REG_CFG_AUTOV9(o, v, d) \
> + PHY_TRSV_REG_CFG_OFFSET(o, v, d, 0x50)
> +
> +/* Calibration for phy initialization */
> +static const struct samsung_ufs_phy_cfg exynosautov9_pre_init_cfg[] = {
> + PHY_COMN_REG_CFG(0x023, 0x80, PWR_MODE_ANY),
> + PHY_COMN_REG_CFG(0x01d, 0x10, PWR_MODE_ANY),
> +
> + PHY_TRSV_REG_CFG_AUTOV9(0x044, 0xb5, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x04d, 0x43, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x05b, 0x20, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x05e, 0xc0, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x038, 0x12, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x059, 0x58, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x06c, 0x18, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG_AUTOV9(0x06d, 0x02, PWR_MODE_ANY),
> +
> + PHY_COMN_REG_CFG(0x023, 0xc0, PWR_MODE_ANY),
> + PHY_COMN_REG_CFG(0x023, 0x00, PWR_MODE_ANY),
> +
> + PHY_TRSV_REG_CFG(0x042, 0x5d, PWR_MODE_ANY),
> + PHY_TRSV_REG_CFG(0x043, 0x80, PWR_MODE_ANY),
> +
> + END_UFS_PHY_CFG,
> +};
> +
> +/* Calibration for HS mode series A/B */
> +static const struct samsung_ufs_phy_cfg exynosautov9_pre_pwr_hs_cfg[] = {
> + PHY_TRSV_REG_CFG(0x032, 0xbc, PWR_MODE_HS_ANY),
> + PHY_TRSV_REG_CFG(0x03c, 0x7f, PWR_MODE_HS_ANY),
> + PHY_TRSV_REG_CFG(0x048, 0xc0, PWR_MODE_HS_ANY),
> +
> + PHY_TRSV_REG_CFG(0x04a, 0x00, PWR_MODE_HS_G3_SER_B),
> + PHY_TRSV_REG_CFG(0x04b, 0x10, PWR_MODE_HS_G1_SER_B |
> + PWR_MODE_HS_G3_SER_B),
> + PHY_TRSV_REG_CFG(0x04d, 0x63, PWR_MODE_HS_G3_SER_B),
> +
> + END_UFS_PHY_CFG,
> +};
> +
> +static const struct samsung_ufs_phy_cfg *exynosautov9_ufs_phy_cfgs[CFG_TAG_MAX] = {
> + [CFG_PRE_INIT] = exynosautov9_pre_init_cfg,
> + [CFG_PRE_PWR_HS] = exynosautov9_pre_pwr_hs_cfg,
> +};
> +
> +const struct samsung_ufs_phy_drvdata exynosautov9_ufs_phy = {
> + .cfg = exynosautov9_ufs_phy_cfgs,
> + .isol = {
> + .offset = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL,
> + .mask = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_MASK,
> + .en = EXYNOSAUTOV9_EMBEDDED_COMBO_PHY_CTRL_EN,
> + },
> + .has_symbol_clk = 0,
> +};
> diff --git a/drivers/phy/samsung/phy-samsung-ufs.c b/drivers/phy/samsung/phy-samsung-ufs.c
> index dd9ab1519d83..602ddef259eb 100644
> --- a/drivers/phy/samsung/phy-samsung-ufs.c
> +++ b/drivers/phy/samsung/phy-samsung-ufs.c
> @@ -347,6 +347,9 @@ static const struct of_device_id samsung_ufs_phy_match[] = {
> {
> .compatible = "samsung,exynos7-ufs-phy",
> .data = &exynos7_ufs_phy,
> + }, {
> + .compatible = "samsung,exynosautov9-ufs-phy",
> + .data = &exynosautov9_ufs_phy,
> },
> {},
> };
> diff --git a/drivers/phy/samsung/phy-samsung-ufs.h b/drivers/phy/samsung/phy-samsung-ufs.h
> index 1532d239ff0e..b9b85d55a2d5 100644
> --- a/drivers/phy/samsung/phy-samsung-ufs.h
> +++ b/drivers/phy/samsung/phy-samsung-ufs.h
> @@ -26,14 +26,17 @@
> .id = PHY_COMN_BLK, \
> }
>
> -#define PHY_TRSV_REG_CFG(o, v, d) { \
> +#define PHY_TRSV_REG_CFG_OFFSET(o, v, d, c) { \
> .off_0 = PHY_APB_ADDR((o)), \
> - .off_1 = PHY_APB_ADDR((o) + PHY_TRSV_CH_OFFSET), \
> + .off_1 = PHY_APB_ADDR((o) + (c)), \
> .val = (v), \
> .desc = (d), \
> .id = PHY_TRSV_BLK, \
> }
>
> +#define PHY_TRSV_REG_CFG(o, v, d) \
> + PHY_TRSV_REG_CFG_OFFSET(o, v, d, PHY_TRSV_CH_OFFSET)
> +
> /* UFS PHY registers */
> #define PHY_PLL_LOCK_STATUS 0x1e
> #define PHY_CDR_LOCK_STATUS 0x5e
> @@ -137,5 +140,6 @@ static inline void samsung_ufs_phy_ctrl_isol(
> }
>
> extern const struct samsung_ufs_phy_drvdata exynos7_ufs_phy;
> +extern const struct samsung_ufs_phy_drvdata exynosautov9_ufs_phy;
>
> #endif /* _PHY_SAMSUNG_UFS_ */
>
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] phy: samsung-ufs: move phy-exynos7-ufs header
2021-07-06 2:06 ` [PATCH v2 1/2] phy: samsung-ufs: move phy-exynos7-ufs header Chanho Park
@ 2021-07-06 2:10 ` Jaehoon Chung
2021-07-06 2:14 ` Chanho Park
0 siblings, 1 reply; 6+ messages in thread
From: Jaehoon Chung @ 2021-07-06 2:10 UTC (permalink / raw)
To: Chanho Park, Kishon Vijay Abraham I, Vinod Koul, Krzysztof Kozlowski
Cc: Marek Szyprowski, Alim Akhtar, linux-phy, Krzysztof Kozlowski
On 7/6/21 11:06 AM, Chanho Park wrote:
> Instead of using exynos7 ufs definition in phy-exynos7-ufs.h, we should
> put it into phy-exynos7-ufs.c to be included different objects or units.
>
> Change-Id: Iddd3662445fe5373c254f994045b451b443fb91c
Remove Change-Id.
Best Regards,
Jaehoon Chung
> Suggested-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> drivers/phy/samsung/Makefile | 3 ++-
> .../samsung/{phy-exynos7-ufs.h => phy-exynos7-ufs.c} | 11 +++++------
> drivers/phy/samsung/phy-samsung-ufs.h | 4 +++-
> 3 files changed, 10 insertions(+), 8 deletions(-)
> rename drivers/phy/samsung/{phy-exynos7-ufs.h => phy-exynos7-ufs.c} (93%)
>
> diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile
> index 3959100fe8a2..d55d9aa5b932 100644
> --- a/drivers/phy/samsung/Makefile
> +++ b/drivers/phy/samsung/Makefile
> @@ -2,7 +2,8 @@
> obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
> obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
> obj-$(CONFIG_PHY_EXYNOS_PCIE) += phy-exynos-pcie.o
> -obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o
> +obj-$(CONFIG_PHY_SAMSUNG_UFS) += phy-samsung-ufs.o \
> + phy-exynos7-ufs.o
> obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o
> phy-exynos-usb2-y += phy-samsung-usb2.o
> phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o
> diff --git a/drivers/phy/samsung/phy-exynos7-ufs.h b/drivers/phy/samsung/phy-exynos7-ufs.c
> similarity index 93%
> rename from drivers/phy/samsung/phy-exynos7-ufs.h
> rename to drivers/phy/samsung/phy-exynos7-ufs.c
> index 518923141958..657b58319c14 100644
> --- a/drivers/phy/samsung/phy-exynos7-ufs.h
> +++ b/drivers/phy/samsung/phy-exynos7-ufs.c
> @@ -1,11 +1,12 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> +// SPDX-License-Identifier: GPL-2.0-only
> /*
> * UFS PHY driver data for Samsung EXYNOS7 SoC
> *
> * Copyright (C) 2020 Samsung Electronics Co., Ltd.
> */
> -#ifndef _PHY_EXYNOS7_UFS_H_
> -#define _PHY_EXYNOS7_UFS_H_
> +
> +#include <linux/io.h>
> +#include <linux/phy/phy.h>
>
> #include "phy-samsung-ufs.h"
>
> @@ -68,7 +69,7 @@ static const struct samsung_ufs_phy_cfg *exynos7_ufs_phy_cfgs[CFG_TAG_MAX] = {
> [CFG_POST_PWR_HS] = exynos7_post_pwr_hs_cfg,
> };
>
> -static struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
> +const struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
> .cfg = exynos7_ufs_phy_cfgs,
> .isol = {
> .offset = EXYNOS7_EMBEDDED_COMBO_PHY_CTRL,
> @@ -77,5 +78,3 @@ static struct samsung_ufs_phy_drvdata exynos7_ufs_phy = {
> },
> .has_symbol_clk = 1,
> };
> -
> -#endif /* _PHY_EXYNOS7_UFS_H_ */
> diff --git a/drivers/phy/samsung/phy-samsung-ufs.h b/drivers/phy/samsung/phy-samsung-ufs.h
> index 5de78710524c..1532d239ff0e 100644
> --- a/drivers/phy/samsung/phy-samsung-ufs.h
> +++ b/drivers/phy/samsung/phy-samsung-ufs.h
> @@ -10,6 +10,8 @@
> #ifndef _PHY_SAMSUNG_UFS_
> #define _PHY_SAMSUNG_UFS_
>
> +#include <linux/regmap.h>
> +
> #define PHY_COMN_BLK 1
> #define PHY_TRSV_BLK 2
> #define END_UFS_PHY_CFG { 0 }
> @@ -134,6 +136,6 @@ static inline void samsung_ufs_phy_ctrl_isol(
> phy->isol->mask, isol ? 0 : phy->isol->en);
> }
>
> -#include "phy-exynos7-ufs.h"
> +extern const struct samsung_ufs_phy_drvdata exynos7_ufs_phy;
>
> #endif /* _PHY_SAMSUNG_UFS_ */
>
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH v2 1/2] phy: samsung-ufs: move phy-exynos7-ufs header
2021-07-06 2:10 ` Jaehoon Chung
@ 2021-07-06 2:14 ` Chanho Park
0 siblings, 0 replies; 6+ messages in thread
From: Chanho Park @ 2021-07-06 2:14 UTC (permalink / raw)
To: 'Jaehoon Chung', 'Kishon Vijay Abraham I',
'Vinod Koul', 'Krzysztof Kozlowski'
Cc: 'Marek Szyprowski', 'Alim Akhtar',
linux-phy, 'Krzysztof Kozlowski'
> > Change-Id: Iddd3662445fe5373c254f994045b451b443fb91c
>
> Remove Change-Id.
Oops. I forgot to remove this.
Thanks.
Best Regards,
Chanho Park
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-07-06 2:15 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20210706020608epcas2p1ff6e0073edfa43de92ebd6c754df18cf@epcas2p1.samsung.com>
2021-07-06 2:06 ` [PATCH v2 0/2] Support exynosautov9 ufs phy driver Chanho Park
[not found] ` <CGME20210706020609epcas2p3af9ad22d849366dd850214b5c2e9f9dd@epcas2p3.samsung.com>
2021-07-06 2:06 ` [PATCH v2 1/2] phy: samsung-ufs: move phy-exynos7-ufs header Chanho Park
2021-07-06 2:10 ` Jaehoon Chung
2021-07-06 2:14 ` Chanho Park
[not found] ` <CGME20210706020611epcas2p47fd1367425d1bac79c7ec983c21086b8@epcas2p4.samsung.com>
2021-07-06 2:06 ` [PATCH v2 2/2] phy: samsung-ufs: support exynosauto ufs phy driver Chanho Park
2021-07-06 2:09 ` Jaehoon Chung
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.