Firefly开源社区

标题: wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置? [打印本页]

作者: nero2019    时间: 2023-8-28 15:15
标题: wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?
wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?
tchip_askquestions

boot-21.rar

18.96 KB, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1


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

方便告诉一下具体节点吗?多谢
作者: nero2019    时间: 2023-8-28 17:42
我刚看了 下载的源码没有ROC-RK568-PC-SE的相关的文件没有搜索到clk32k 相关的。可以直接贴一下相关的代码吗
作者: luwy    时间: 2023-8-29 10:49
  1.         sdio_pwrseq: sdio-pwrseq {
  2.                 compatible = "mmc-pwrseq-simple";
  3.                 clocks = <&rk809 1>;
  4.                 clock-names = "ext_clock";
  5.                 pinctrl-names = "default";
  6.                 ......

  7.         };
复制代码

作者: nero2019    时间: 2023-8-29 18:08
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
作者: zhangzhenzhao    时间: 2023-8-30 08:31
nero2019 发表于 2023-8-29 18:08
能帮忙解答一下吗?直接配置为clk_wifi也量不到信号输出。
我在static struct clk_hw *
of_clk_rk808_g ...

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

作者: nero2019    时间: 2023-8-30 14:47
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);
        }
作者: luwy    时间: 2023-8-30 17:36
官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常
作者: nero2019    时间: 2023-8-30 17:42
luwy 发表于 2023-8-30 17:36
官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常

看了log RK809有正常加载,PMIC_INT ,SLEPP dts有正常配置;软件流程上也显示使能了CLK32K;但是硬件上量不到,这种情况有可能是哪里的硬件有影响?
作者: luwy    时间: 2023-8-30 18:03
看下有没有接上拉

作者: nero2019    时间: 2023-8-30 19:53
luwy 发表于 2023-8-30 18:03
看下有没有接上拉

如图C6110未贴

微信图片_20230830195157.png (67.71 KB, 下载次数: 59)

微信图片_20230830195157.png

作者: luwy    时间: 2023-8-31 08:56
809那边呢
作者: luwy    时间: 2023-8-31 08:56
确认下,没有加上拉, 加上去
作者: nero2019    时间: 2023-8-31 09:35
luwy 发表于 2023-8-31 08:56
确认下,没有加上拉, 加上去

809那边就是直接连到RK809了,没有上拉,我让硬件上拉试试。谢谢
作者: nero2019    时间: 2023-8-31 11:59
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。。
作者: luwy    时间: 2023-9-4 09:28
可以参考SDK下 RKDocs/common/GMAC 文档调试
作者: nero2019    时间: 2023-9-4 11:14
luwy 发表于 2023-9-4 09:28
可以参考SDK下 RKDocs/common/GMAC 文档调试

已经是按文档配置的。接法也和DEMO板一样;但是实际开机就是不行。我单独提了一个,里面有详细log
作者: wx__wfNftc    时间: 2024-3-21 21:33
nero2019 发表于 2023-8-30 17:42
看了log RK809有正常加载,PMIC_INT ,SLEPP dts有正常配置;软件流程上也显示使能了CLK32K;但是硬件上量 ...

你好。请问您解决了吗




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1