wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?

固件类型:自行编译的固件
SDK包名称:Firefly-RK356X_Android11.0
SDK修改内容:wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?
Log日志:boot-21.rar

wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?
tchip_askquestions
boot-21.rar (19 KB)

请参照ROC-RK3568-PC SE的配置,ROC-RK3568-PC SE应该就是用的RK809的CLK32K

zhangzhenzhao 发表于 2023-8-28 16:08
请参照ROC-RK3568-PC SE的配置,ROC-RK3568-PC SE应该就是用的RK809的CLK32K

方便告诉一下具体节点吗?多谢

我刚看了 下载的源码没有ROC-RK568-PC-SE的相关的文件没有搜索到clk32k 相关的。可以直接贴一下相关的代码吗

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&rk809 1>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
                ......

	};

zhangzhenzhao 发表于 2023-8-28 16:08
请参照ROC-RK3568-PC SE的配置,ROC-RK3568-PC SE应该就是用的RK809的CLK32K

能帮忙解答一下吗?直接配置为clk_wifi也量不到信号输出。
我在static struct clk_hw *
of_clk_rk808_get(struct of_phandle_args *clkspec, void *data)
{
struct rk808_clkout *rk808_clkout = data;
unsigned int idx = clkspec->args[0];
pr_err(“%s:avalid index %u\n”, func, idx);

if (idx >= 2) {
	pr_err("%s: invalid index %u\n", __func__, idx);
	return ERR_PTR(-EINVAL);
}

return idx ? &rk808_clkout->clkout2_hw : &rk808_clkout->clkout1_hw;

}

static int rk817_clkout2_enable(struct clk_hw *hw, bool enable)
{
struct rk808_clkout *rk808_clkout = container_of(hw,
struct rk808_clkout,
clkout2_hw);
struct rk808 *rk808 = rk808_clkout->rk808;
pr_err(“%s:\n”, func);

return regmap_update_bits(rk808->regmap, RK817_SYS_CFG(1),
			  RK817_CLK32KOUT2_EN,
			  enable ? RK817_CLK32KOUT2_EN : 0);

}
这里加了打印,代码流程都有运行 但是没有32K输出。
[ 1.758304] [BT_RFKILL]: Enter rfkill_rk_init
[ 1.758312] [WLAN_RFKILL]: Enter rfkill_wlan_init
[ 1.758761] [WLAN_RFKILL]: Enter rfkill_wlan_probe
[ 1.758798] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi_chip_type = ap6256
[ 1.758809] [WLAN_RFKILL]: wlan_platdata_parse_dt: enable wifi power control.
[ 1.758818] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi power controled by gpio.
[ 1.758839] [WLAN_RFKILL]: wlan_platdata_parse_dt: WIFI,poweren_gpio = 137 flags = 1.
[ 1.758857] [WLAN_RFKILL]: wlan_platdata_parse_dt: WIFI,host_wake_irq = 124, flags = 0.
[ 1.758872] of_clk_rk808_get:avalid index 1
[ 1.758886] [WLAN_RFKILL]: wlan_platdata_parse_dt: ref-clock-frequency=32768!
[ 1.758896] rk817_clkout2_prepare:
[ 1.758903] rk817_clkout2_enable:
[ 1.758915] [WLAN_RFKILL]: wlan_platdata_parse_dt: clk_prepare_enable!
[ 1.758925] [WLAN_RFKILL]: rfkill_wlan_probe: init gpio
[ 1.758944] [WLAN_RFKILL]: rfkill_set_wifi_bt_power: 1

nero2019 发表于 2023-8-29 18:08
能帮忙解答一下吗?直接配置为clk_wifi也量不到信号输出。
我在static struct clk_hw *
of_clk_rk808_g …

就是按5楼的配置的
另外也可以参考下rk文档
RKDocs\common\PMIC

zhangzhenzhao 发表于 2023-8-30 08:31
就是按5楼的配置的
另外也可以参考下rk文档
RKDocs\common\PMIC

我不使用外部晶振,使用RK809的68的CLK
32K来做为时钟。默认的代码就是这种配置,代码会走 The ref_wifi_clk not found。
默认的代码使用外部晶振。
data->ext_clk = devm_clk_get(dev, “clk_wifi”);
if (IS_ERR(data->ext_clk)) {
LOG(“%s: The ref_wifi_clk not found !\n”, func);
} else {
of_property_read_u32(node, “ref-clock-frequency”,
&ext_clk_value);
if (ext_clk_value > 0) {
ret = clk_set_rate(data->ext_clk, ext_clk_value);
if (ret)
LOG(“%s: set ref clk error!\n”, func);
}
LOG(“%s: ref-clock-frequency=%d!\n”, func,ext_clk_value);

	ret = clk_prepare_enable(data->ext_clk);
	if (ret)
		LOG("%s: enable ref clk error!\n", __func__);

	/* WIFI clock (REF_CLKOUT) output enable.
	 * 1'b0: drive disable
	 * 1'b1: output enable
	 */
	LOG("%s: clk_prepare_enable!\n", __func__);
	if (of_machine_is_compatible("rockchip,rk3308"))
		regmap_write(data->grf, 0x0314, 0x00020002);
}

官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常

luwy 发表于 2023-8-30 17:36
官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常

看了log RK809有正常加载,PMIC_INT ,SLEPP dts有正常配置;软件流程上也显示使能了CLK32K;但是硬件上量不到,这种情况有可能是哪里的硬件有影响?

看下有没有接上拉

luwy 发表于 2023-8-30 18:03
看下有没有接上拉

如图C6110未贴

809那边呢

确认下,没有加上拉, 加上去

luwy 发表于 2023-8-31 08:56
确认下,没有加上拉, 加上去

809那边就是直接连到RK809了,没有上拉,我让硬件上拉试试。谢谢

luwy 发表于 2023-8-31 08:56
确认下,没有加上拉, 加上去

加了上拉可以了。
再请教一个问题:
以太网使用的RGMII Crystal 25M for PHY, RGMII_CLK input 125M for TX_CLK;
dtsi 配置和release的代码也一样;(可以确证RESET和GPIO)但是开机提示
[ 29.956018] rk_gmac-dwmac fe2a0000.ethernet eth0: Could not attach to PHY
[ 29.956052] rk_gmac-dwmac fe2a0000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19),PHY失败;网上看了一下说这个错误一般都是RESET和clk配置问题;但是我配置是按硬件配置的,又不知道怎么查了。第一次调试RK。。

可以参考SDK下 RKDocs/common/GMAC 文档调试

luwy 发表于 2023-9-4 09:28
可以参考SDK下 RKDocs/common/GMAC 文档调试

已经是按文档配置的。接法也和DEMO板一样;但是实际开机就是不行。我单独提了一个,里面有详细log

nero2019 发表于 2023-8-30 17:42
看了log RK809有正常加载,PMIC_INT ,SLEPP dts有正常配置;软件流程上也显示使能了CLK32K;但是硬件上量 …

你好。请问您解决了吗