forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/mfd/rk630.c
....@@ -41,7 +41,7 @@
4141 dev_err(rk630->dev, "Could not write to CRU: %d\n", ret);
4242 return ret;
4343 }
44
- usleep_range(20, 30);
44
+ udelay(20);
4545
4646 val = BIT(12 + 16);
4747 ret = regmap_write(rk630->cru, CRU_REG(0x50), val);
....@@ -49,7 +49,7 @@
4949 dev_err(rk630->dev, "Could not write to CRU: %d\n", ret);
5050 return ret;
5151 }
52
- usleep_range(20, 30);
52
+ udelay(20);
5353
5454 /* power up && led*/
5555 val = BIT(1 + 16) | BIT(1) | BIT(2 + 16);
....@@ -113,14 +113,6 @@
113113
114114 static const struct mfd_cell rk630_devs[] = {
115115 {
116
- .name = "rk630-efuse",
117
- .of_compatible = "rockchip,rk630-efuse",
118
- },
119
- {
120
- .name = "rk630-pinctrl",
121
- .of_compatible = "rockchip,rk630-pinctrl",
122
- },
123
- {
124116 .name = "rk630-tve",
125117 .of_compatible = "rockchip,rk630-tve",
126118 },
....@@ -131,10 +123,6 @@
131123 {
132124 .name = "rk630-macphy",
133125 .of_compatible = "rockchip,rk630-macphy",
134
- },
135
- {
136
- .name = "rk630-codec",
137
- .of_compatible = "rockchip,rk630-codec",
138126 },
139127 };
140128
....@@ -170,27 +158,6 @@
170158 };
171159 EXPORT_SYMBOL_GPL(rk630_grf_regmap_config);
172160
173
-static const struct regmap_range rk630_pinctrl_readable_ranges[] = {
174
- regmap_reg_range(GPIO0_BASE, GPIO0_BASE + GPIO_VER_ID),
175
- regmap_reg_range(GPIO1_BASE, GPIO1_BASE + GPIO_VER_ID),
176
-};
177
-
178
-static const struct regmap_access_table rk630_pinctrl_readable_table = {
179
- .yes_ranges = rk630_pinctrl_readable_ranges,
180
- .n_yes_ranges = ARRAY_SIZE(rk630_pinctrl_readable_ranges),
181
-};
182
-
183
-const struct regmap_config rk630_pinctrl_regmap_config = {
184
- .name = "pinctrl",
185
- .reg_bits = 32,
186
- .val_bits = 32,
187
- .reg_stride = 4,
188
- .max_register = GPIO_MAX_REGISTER,
189
- .reg_format_endian = REGMAP_ENDIAN_NATIVE,
190
- .val_format_endian = REGMAP_ENDIAN_NATIVE,
191
- .rd_table = &rk630_pinctrl_readable_table,
192
-};
193
-
194161 static const struct regmap_range rk630_cru_readable_ranges[] = {
195162 regmap_reg_range(CRU_SPLL_CON0, CRU_SPLL_CON2),
196163 regmap_reg_range(CRU_MODE_CON, CRU_MODE_CON),
....@@ -214,6 +181,7 @@
214181 .val_format_endian = REGMAP_ENDIAN_NATIVE,
215182 .rd_table = &rk630_cru_readable_table,
216183 };
184
+EXPORT_SYMBOL_GPL(rk630_cru_regmap_config);
217185
218186 static const struct regmap_range rk630_rtc_readable_ranges[] = {
219187 regmap_reg_range(RTC_SET_SECONDS, RTC_CNT_3),
....@@ -234,29 +202,36 @@
234202 .val_format_endian = REGMAP_ENDIAN_NATIVE,
235203 .rd_table = &rk630_rtc_readable_table,
236204 };
205
+EXPORT_SYMBOL_GPL(rk630_rtc_regmap_config);
237206
238207 int rk630_core_probe(struct rk630 *rk630)
239208 {
240209 bool macphy_enabled = false;
210
+ struct clk *ref_clk;
241211 struct device_node *np;
242212 unsigned long rate;
243213 int ret;
244214
245
- rk630->ref_clk = devm_clk_get(rk630->dev, "ref");
246
- if (IS_ERR(rk630->ref_clk)) {
247
- dev_err(rk630->dev, "failed to get ref clk source\n");
248
- return PTR_ERR(rk630->ref_clk);
215
+ if (!rk630->irq) {
216
+ dev_err(rk630->dev, "No interrupt support, no core IRQ\n");
217
+ return -EINVAL;
249218 }
250219
251
- ret = clk_prepare_enable(rk630->ref_clk);
220
+ ref_clk = devm_clk_get(rk630->dev, "ref");
221
+ if (IS_ERR(ref_clk)) {
222
+ dev_err(rk630->dev, "failed to get ref clk source\n");
223
+ return PTR_ERR(ref_clk);
224
+ }
225
+
226
+ ret = clk_prepare_enable(ref_clk);
252227 if (ret < 0) {
253228 dev_err(rk630->dev, "failed to enable ref clk - %d\n", ret);
254229 return ret;
255230 }
256
- rate = clk_get_rate(rk630->ref_clk);
231
+ rate = clk_get_rate(ref_clk);
257232
258233 ret = devm_add_action_or_reset(rk630->dev, (void (*) (void *))clk_disable_unprepare,
259
- rk630->ref_clk);
234
+ ref_clk);
260235 if (ret)
261236 return ret;
262237
....@@ -273,11 +248,10 @@
273248 usleep_range(50000, 60000);
274249 gpiod_direction_output(rk630->reset_gpio, 0);
275250
276
- if (!rk630->irq) {
277
- dev_err(rk630->dev, "No interrupt support, no core IRQ\n");
278
- return -EINVAL;
279
- }
280
-
251
+ /**
252
+ * If rtc output clamp is enabled, rtc regs can't be accessed,
253
+ * RK630 irq add will failed.
254
+ */
281255 regmap_update_bits(rk630->grf, PLUMAGE_GRF_SOC_CON0,
282256 RTC_CLAMP_EN_MASK, RTC_CLAMP_EN(1));
283257