Browse Prior Art Database

Clock enabled automatically when CPU accesses a register

IP.com Disclosure Number: IPCOM000248974D
Publication Date: 2017-Jan-25
Document File: 4 page(s) / 70K

Publishing Venue

The IP.com Prior Art Database

Abstract

In normal SoC designs, the system bus may hang when CPU accesses an external IP register if the corresponding register clocks are not enabled. This solution propose to enable the clocks automatically once such registers are detected to be accessed by CPU. In this way, system hang can be avoided.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 57% of the total text.

Title: Clock enabled automatically when CPU accesses a register

Abstract:

In normal SoC designs, the system bus may hang when CPU accesses an external IP register if the corresponding register clocks are not enabled. This solution propose to enable the clocks automatically once such registers are detected to be accessed by CPU. In this way, system hang can be avoided.

Details:

In normal SoC designs, the system may hang when CPU tries to access (Read/Write) an external IP registers if the IP Clock is not enabled. It is because usually the IP Register Access bus has to wait for a valid READY signal from the target IP block. The target IP block can’t generate a valid READY signal if the IP clock is not enabled. Thus, if the IP clock is not enabled, then the system bus keeps waiting and hang, as well as the CPU.

It’s hardly for HW/SoC to enable the clock automatically when access registers. This paper proposes to use a SW solution to address such issue.

 


The exemplary implementation of this solution includes follows steps:

Step 1: System Setup during Booting

·         Build IP list table

The elements include IP module register base address, register size, IP module index. This information can be got from the SoC Reference Manual or Datasheet and it is SoC specific, different SoCs may build different tables.

·         Build IP module clock tables.

The elements include IP module index and all required clocks to access the register. It’s SoC specific and the information can be got from SoC Reference Manual or Datasheet. At the same time, it’s also OS dependant. For example, for ARM Linux platform supporting Device Tree, the clock table information can be got from Device Tree DTB file.

usdhc1: usdhc@02190000 {

            compatible = "fsl,imx6ul-usdhc", "fsl,imx6sx-usdhc";

            reg = <0x02190000 0x4000>;

            interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;

            clocks = <&clks IMX6UL_CLK_USDHC1>,

                          <&clks IMX6UL_CLK_USDHC1>,

                        <&clks IMX6UL_CLK_USDHC1>;

            clock-na...