Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

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

89

积分

0

威望

0

贡献

技术小白

积分
89

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

发表于 2023-8-28 15:15:10      浏览:6140 | 回复:18        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 自行编译的固件
  • SDK包名称: Firefly-RK356X_Android11.0
  • SDK更新到哪个COMMIT: 0000-00-00 00:00:00
  • SDK修改内容: wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?
  • Log日志: boot-21.rar
问题描述及复现步骤:
wifi模块不使用外部晶振。需要改成使用RK809的CLK32K,dtsi要怎么设置?

boot-21.rar

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

回复

使用道具 举报

1210

积分

1

威望

3

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
1210
发表于 2023-8-28 16:08:59        只看该作者  沙发
请参照ROC-RK3568-PC SE的配置,ROC-RK3568-PC SE应该就是用的RK809的CLK32K
回复

使用道具 举报

89

积分

0

威望

0

贡献

技术小白

积分
89
发表于 2023-8-28 17:35:35        只看该作者  板凳
zhangzhenzhao 发表于 2023-8-28 16:08
请参照ROC-RK3568-PC SE的配置,ROC-RK3568-PC SE应该就是用的RK809的CLK32K

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

使用道具 举报

89

积分

0

威望

0

贡献

技术小白

积分
89
发表于 2023-8-28 17:42:05        只看该作者  地板
我刚看了 下载的源码没有ROC-RK568-PC-SE的相关的文件没有搜索到clk32k 相关的。可以直接贴一下相关的代码吗
回复

使用道具 举报

811

积分

0

威望

0

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
811
发表于 2023-8-29 10:49:47        只看该作者  5#
  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.         };
复制代码
回复

使用道具 举报

89

积分

0

威望

0

贡献

技术小白

积分
89
发表于 2023-8-29 18:08:03        只看该作者  6#
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
回复

使用道具 举报

1210

积分

1

威望

3

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
1210
发表于 2023-8-30 08:31:58        只看该作者  7#
nero2019 发表于 2023-8-29 18:08
能帮忙解答一下吗?直接配置为clk_wifi也量不到信号输出。
我在static struct clk_hw *
of_clk_rk808_g ...

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

使用道具 举报

89

积分

0

威望

0

贡献

技术小白

积分
89
发表于 2023-8-30 14:47:27        只看该作者  8#
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);
        }
回复

使用道具 举报

811

积分

0

威望

0

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
811
发表于 2023-8-30 17:36:07        只看该作者  9#
官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常
回复

使用道具 举报

89

积分

0

威望

0

贡献

技术小白

积分
89
发表于 2023-8-30 17:42:59        只看该作者  10#
luwy 发表于 2023-8-30 17:36
官方默认的配置就是使用rk809 出来的32.768 MHz 的时钟, 如果没有clk 出来,麻烦先检查硬件是否正常

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

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表