From: shawnguo@kernel.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: i.MX7 clock support broken
Date: Wed, 8 Feb 2017 11:06:14 +0800 [thread overview]
Message-ID: <20170208030613.GK3407@dragon> (raw)
In-Reply-To: <20170207142225.zitac2r7g3kvowjw@pengutronix.de>
+Frank, who is the author and submitter of i.MX7 clock driver.
Shawn
On Tue, Feb 07, 2017 at 03:22:25PM +0100, Sascha Hauer wrote:
> Hi All,
>
> I recently adopted the i.MX7 clock tree from Linux to barebox and wondered
> why ethernet doesn't work. I found out that the clock tree in Linux is quite
> different from what the reference manual describes and also quite different
> from the hardware I have on my desk. There are several clocks that only exist
> in the driver, but not in the actual hardware and also several clocks which
> are in hardware, but not in the driver.
>
> These clocks exist in the driver only, but not in the hardware:
>
> clks[IMX7D_ARM_A7_ROOT_CLK] = imx_clk_gate4("arm_a7_root_clk", "arm_a7_div", base + 0x4000, 0);
> clks[IMX7D_ARM_M4_ROOT_CLK] = imx_clk_gate4("arm_m4_root_clk", "arm_m4_div", base + 0x4010, 0);
> clks[IMX7D_ARM_M0_ROOT_CLK] = imx_clk_gate4("arm_m0_root_clk", "arm_m0_div", base + 0x4020, 0);
> clks[IMX7D_USB_HSIC_ROOT_CLK] = imx_clk_gate4("usb_hsic_root_clk", "usb_hsic_post_div", base + 0x4420, 0);
> clks[IMX7D_PCIE_PHY_ROOT_CLK] = imx_clk_gate4("pcie_phy_root_clk", "pcie_phy_post_div", base + 0x4600, 0);
> clks[IMX7D_SPDIF_ROOT_CLK] = imx_clk_gate4("spdif_root_clk", "spdif_post_div", base + 0x44d0, 0);
> clks[IMX7D_ENET1_REF_ROOT_CLK] = imx_clk_gate4("enet1_ref_root_clk", "enet1_ref_post_div", base + 0x44e0, 0);
> clks[IMX7D_ENET1_TIME_ROOT_CLK] = imx_clk_gate4("enet1_time_root_clk", "enet1_time_post_div", base + 0x44f0, 0);
> clks[IMX7D_ENET2_REF_ROOT_CLK] = imx_clk_gate4("enet2_ref_root_clk", "enet2_ref_post_div", base + 0x4500, 0);
> clks[IMX7D_ENET2_TIME_ROOT_CLK] = imx_clk_gate4("enet2_time_root_clk", "enet2_time_post_div", base + 0x4510, 0);
> clks[IMX7D_ENET_PHY_REF_ROOT_CLK] = imx_clk_gate4("enet_phy_ref_root_clk", "enet_phy_ref_post_div", base + 0x4520, 0);
> clks[IMX7D_AUDIO_MCLK_ROOT_CLK] = imx_clk_gate4("audio_mclk_root_clk", "audio_mclk_post_div", base + 0x4790, 0);
> clks[IMX7D_WRCLK_ROOT_CLK] = imx_clk_gate4("wrclk_root_clk", "wrclk_post_div", base + 0x47a0, 0);
> clks[IMX7D_ADC_ROOT_CLK] = imx_clk_gate4("adc_root_clk", "ipg_root_clk", base + 0x4200, 0);
>
> And these clocks are described in the reference manual, but not handled
> in the driver:
>
> CCM_CCGR7 sim_m 0x4070
> CCM_CCGR8 sim_s 0x4080
> CCM_CCGR9 sim_wakeup 0x4090
> CCM_CCGR10 ipmux1 0x40A0
> CCM_CCGR11 ipmux2 0x40B0
> CCM_CCGR12 ipmux3 0x40C0
> CCM_CCGR16 rom 0x4100
> CCM_CCGR33 anatop 0x4210
> CCM_CCGR34 sctr 0x4220
> CCM_CCGR35 ocotp 0x4230
> CCM_CCGR36 caam 0x4240
> CCM_CCGR37 snvs 0x4250
> CCM_CCGR38 rdc 0x4260
> CCM_CCGR39 mu 0x4270
> CCM_CCGR40 hs 0x4280
> CCM_CCGR41 dvfs 0x4290
> CCM_CCGR42 qos 0x42A0
> CCM_CCGR43 qos_dispmix 0x42B0
> CCM_CCGR44 qos_megamix 0x42C0
> CCM_CCGR45 csu 0x42D0
> CCM_CCGR46 dbgmon 0x42E0
> CCM_CCGR47 debug 0x42F0
> CCM_CCGR49 sec_debug 0x4310
> CCM_CCGR64 sema1 0x4400
> CCM_CCGR65 sema2 0x4410
> CCM_CCGR68 perfmon1 0x4440
> CCM_CCGR69 perfmon2 0x4450
> CCM_CCGR76 pxp 0x44C0
> CCM_CCGR104 usb_ctrl 0x4680
> CCM_CCGR105 usb_hsic 0x4690
> CCM_CCGR106 usb_phy1 0x46A0
> CCM_CCGR107 usb_phy2 0x46B0
> CCM_CCGR112 enet1 0x4700
> CCM_CCGR113 enet2 0x4710
> CCM_CCGR160 gpio1 0x4A00
> CCM_CCGR161 gpio2 0x4A10
> CCM_CCGR162 gpio3 0x4A20
> CCM_CCGR163 gpio4 0x4A30
> CCM_CCGR164 gpio5 0x4A40
> CCM_CCGR165 gpio6 0x4A50
> CCM_CCGR166 gpio7 0x4A60
> CCM_CCGR168 iomux 0x4A80
> CCM_CCGR169 iomux_lpsr 0x4A90
> CCM_CCGR170 kpp 0x4AA0
>
> It seems most stuff works in the Kernel when the clocks are left
> enabled in the bootloader, but for example the real ethernet clocks
> are never handled in the kernel.
>
> Also I stumbled upon the gate at offset 0x4130. The same gate is
> registered as 5 different gates in the kernel without being handled
> as a shared gate:
>
> clks[IMX7D_NAND_USDHC_BUS_ROOT_CLK] = imx_clk_gate4("nand_usdhc_root_clk", "nand_usdhc_post_div", base + 0x4130, 0);
> clks[IMX7D_DRAM_ROOT_CLK] = imx_clk_gate4("dram_root_clk", "dram_post_div", base + 0x4130, 0);
> clks[IMX7D_DRAM_PHYM_ROOT_CLK] = imx_clk_gate4("dram_phym_root_clk", "dram_phym_cg", base + 0x4130, 0);
> clks[IMX7D_DRAM_PHYM_ALT_ROOT_CLK] = imx_clk_gate4("dram_phym_alt_root_clk", "dram_phym_alt_post_div", base + 0x4130, 0);
> clks[IMX7D_DRAM_ALT_ROOT_CLK] = imx_clk_gate4("dram_alt_root_clk", "dram_alt_post_div", base + 0x4130, 0);
>
> I don't have a patch for this, just hope that somebody @NXP has a better
> clue what's going on and maybe there already is a fix somewhere floating
> around.
>
> Sascha
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2017-02-08 3:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-07 14:22 i.MX7 clock support broken Sascha Hauer
2017-02-08 3:06 ` Shawn Guo [this message]
2017-02-08 16:47 ` A.S. Dong
2017-02-08 17:00 ` Frank Li
2017-02-10 3:37 ` Andy Duan
2017-02-10 4:13 ` Andrew Lunn
2017-02-10 6:49 ` Sascha Hauer
2017-02-10 6:59 ` A.S. Dong
2017-02-10 7:03 ` Sascha Hauer
2017-02-10 7:07 ` A.S. Dong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170208030613.GK3407@dragon \
--to=shawnguo@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.