From 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 13 May 2024 10:30:14 +0000
Subject: [PATCH] modify sin led gpio

---
 kernel/drivers/mfd/rk630.c |   68 ++++++++++-----------------------
 1 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/kernel/drivers/mfd/rk630.c b/kernel/drivers/mfd/rk630.c
index c363868..b8b8538 100644
--- a/kernel/drivers/mfd/rk630.c
+++ b/kernel/drivers/mfd/rk630.c
@@ -41,7 +41,7 @@
 		dev_err(rk630->dev, "Could not write to CRU: %d\n", ret);
 		return ret;
 	}
-	usleep_range(20, 30);
+	udelay(20);
 
 	val = BIT(12 + 16);
 	ret = regmap_write(rk630->cru, CRU_REG(0x50), val);
@@ -49,7 +49,7 @@
 		dev_err(rk630->dev, "Could not write to CRU: %d\n", ret);
 		return ret;
 	}
-	usleep_range(20, 30);
+	udelay(20);
 
 	/* power up && led*/
 	val = BIT(1 + 16) | BIT(1) | BIT(2 + 16);
@@ -113,14 +113,6 @@
 
 static const struct mfd_cell rk630_devs[] = {
 	{
-		.name = "rk630-efuse",
-		.of_compatible = "rockchip,rk630-efuse",
-	},
-	{
-		.name = "rk630-pinctrl",
-		.of_compatible = "rockchip,rk630-pinctrl",
-	},
-	{
 		.name = "rk630-tve",
 		.of_compatible = "rockchip,rk630-tve",
 	},
@@ -131,10 +123,6 @@
 	{
 		.name = "rk630-macphy",
 		.of_compatible = "rockchip,rk630-macphy",
-	},
-	{
-		.name = "rk630-codec",
-		.of_compatible = "rockchip,rk630-codec",
 	},
 };
 
@@ -170,27 +158,6 @@
 };
 EXPORT_SYMBOL_GPL(rk630_grf_regmap_config);
 
-static const struct regmap_range rk630_pinctrl_readable_ranges[] = {
-	regmap_reg_range(GPIO0_BASE, GPIO0_BASE + GPIO_VER_ID),
-	regmap_reg_range(GPIO1_BASE, GPIO1_BASE + GPIO_VER_ID),
-};
-
-static const struct regmap_access_table rk630_pinctrl_readable_table = {
-	.yes_ranges = rk630_pinctrl_readable_ranges,
-	.n_yes_ranges = ARRAY_SIZE(rk630_pinctrl_readable_ranges),
-};
-
-const struct regmap_config rk630_pinctrl_regmap_config = {
-	.name = "pinctrl",
-	.reg_bits = 32,
-	.val_bits = 32,
-	.reg_stride = 4,
-	.max_register = GPIO_MAX_REGISTER,
-	.reg_format_endian = REGMAP_ENDIAN_NATIVE,
-	.val_format_endian = REGMAP_ENDIAN_NATIVE,
-	.rd_table = &rk630_pinctrl_readable_table,
-};
-
 static const struct regmap_range rk630_cru_readable_ranges[] = {
 	regmap_reg_range(CRU_SPLL_CON0, CRU_SPLL_CON2),
 	regmap_reg_range(CRU_MODE_CON, CRU_MODE_CON),
@@ -214,6 +181,7 @@
 	.val_format_endian = REGMAP_ENDIAN_NATIVE,
 	.rd_table = &rk630_cru_readable_table,
 };
+EXPORT_SYMBOL_GPL(rk630_cru_regmap_config);
 
 static const struct regmap_range rk630_rtc_readable_ranges[] = {
 	regmap_reg_range(RTC_SET_SECONDS, RTC_CNT_3),
@@ -234,29 +202,36 @@
 	.val_format_endian = REGMAP_ENDIAN_NATIVE,
 	.rd_table = &rk630_rtc_readable_table,
 };
+EXPORT_SYMBOL_GPL(rk630_rtc_regmap_config);
 
 int rk630_core_probe(struct rk630 *rk630)
 {
 	bool macphy_enabled = false;
+	struct clk *ref_clk;
 	struct device_node *np;
 	unsigned long rate;
 	int ret;
 
-	rk630->ref_clk = devm_clk_get(rk630->dev, "ref");
-	if (IS_ERR(rk630->ref_clk)) {
-		dev_err(rk630->dev, "failed to get ref clk source\n");
-		return PTR_ERR(rk630->ref_clk);
+	if (!rk630->irq) {
+		dev_err(rk630->dev, "No interrupt support, no core IRQ\n");
+		return -EINVAL;
 	}
 
-	ret = clk_prepare_enable(rk630->ref_clk);
+	ref_clk = devm_clk_get(rk630->dev, "ref");
+	if (IS_ERR(ref_clk)) {
+		dev_err(rk630->dev, "failed to get ref clk source\n");
+		return PTR_ERR(ref_clk);
+	}
+
+	ret = clk_prepare_enable(ref_clk);
 	if (ret < 0) {
 		dev_err(rk630->dev, "failed to enable ref clk - %d\n", ret);
 		return ret;
 	}
-	rate = clk_get_rate(rk630->ref_clk);
+	rate = clk_get_rate(ref_clk);
 
 	ret = devm_add_action_or_reset(rk630->dev, (void (*) (void *))clk_disable_unprepare,
-				       rk630->ref_clk);
+				       ref_clk);
 	if (ret)
 		return ret;
 
@@ -273,11 +248,10 @@
 	usleep_range(50000, 60000);
 	gpiod_direction_output(rk630->reset_gpio, 0);
 
-	if (!rk630->irq) {
-		dev_err(rk630->dev, "No interrupt support, no core IRQ\n");
-		return -EINVAL;
-	}
-
+	/**
+	 * If rtc output clamp is enabled, rtc regs can't be accessed,
+	 * RK630 irq add will failed.
+	 */
 	regmap_update_bits(rk630->grf, PLUMAGE_GRF_SOC_CON0,
 			   RTC_CLAMP_EN_MASK, RTC_CLAMP_EN(1));
 

--
Gitblit v1.6.2