This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3352: Missing CPU OPP configuration in DTS ???

Part Number: AM3352


Hi,

I am getting the following error, while booting linux,

omap_voltage_late_init: Voltage driver support not added

 


I have been going through the documentation provided in linux, which is relevant to this current problem.

I have observed that this has something to deal with the voltage and frequency maps which should be present in the DT, is that right ?

Also, I have seen that under arch/arm/mach-omap2/ there are three files mainly dealing with this,

io.c  ->

#ifdef CONFIG_SOC_AM33XX
void __init am33xx_init_early(void)
{
        omap2_set_globals_tap(AM335X_CLASS,
                              AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE));
        omap2_control_base_init();
        omap3xxx_check_revision();
        am33xx_check_features();
        omap2_prcm_base_init();
        am33xx_powerdomains_init();
        am33xx_clockdomains_init();
        am33xx_hwmod_init();
        omap_hwmod_init_postsetup();
        omap_clk_soc_init = am33xx_dt_clk_init;
}

void __init am33xx_init_late(void)
{
        omap_common_late_init();
}
#endif

pm.c  ->

int __init omap2_common_pm_late_init(void)
{
        /* Init the voltage layer */
        omap3_twl_init();
        omap4_twl_init();
        omap_voltage_late_init();

        /* Initialize the voltages */
        omap3_init_voltages();
        omap4_init_voltages();

        /* Smartreflex device init */
        omap_devinit_smartreflex();

        return 0;
}

voltage.c  ->

int __init omap_voltage_late_init(void)
{
        struct voltagedomain *voltdm;

        if (list_empty(&voltdm_list)) {
                pr_err("%s: Voltage driver support not added\n",
                        __func__);
                return -EINVAL;
        }

        list_for_each_entry(voltdm, &voltdm_list, node) {
                struct clk *sys_ck;

                if (!voltdm->scalable)
                        continue;

                sys_ck = clk_get(NULL, voltdm->sys_clk.name);
                if (IS_ERR(sys_ck)) {
                        pr_warn("%s: Could not get sys clk.\n", __func__);
                        return -EINVAL;
                }
                voltdm->sys_clk.rate = clk_get_rate(sys_ck);
                WARN_ON(!voltdm->sys_clk.rate);
                clk_put(sys_ck);

                if (voltdm->vc) {
                        voltdm->scale = omap_vc_bypass_scale;
                        omap_vc_init_channel(voltdm);
                }

                if (voltdm->vp) {
                        voltdm->scale = omap_vp_forceupdate_scale;
                        omap_vp_init(voltdm);
                }
        }

        return 0;
}

FYI,

I am using a custom board based on AM3352.

DTS includes,

#include "am33xx.dtsi"

DTS has the following entry for cpu,

cpus {
		cpu@0 {
			cpu0-supply = <&dcdc2_reg>;
		};
	};
  • Hi Moses,

    Do you use AM335x PSDK Linux? If yes, which version? The latest version is 6.00 (kernel v4.19)

    Regards,
    Pavel

  • Moses,

    Moses Christopher said:
    omap_voltage_late_init: Voltage driver support not added

    From what I am able to find, this error message can be safely ignored for AM335x devices. Voltage domain init is made only for OMAP2/3/4/5, TI81xx and AM35x devices, but not for AM335x, AM43x, AM57x and AM65x devices.

    Check below files and functions:

    linux-kernel/arch/arm/mach-omap2/voltage.c -> voltdm_init()

    linux-kernel/arch/arm/mach-omap2/voltagedomains2xxx_data.c

    linux-kernel/arch/arm/mach-omap2/voltagedomains3xxx_data.c -> omap3xxx_voltagedomains_init()

    linux-kernel/arch/arm/mach-omap2/voltagedomains44xx_data.c

    linux-kernel/arch/arm/mach-omap2/voltagedomains54xx_data.c

    linux-kernel/arch/arm/mach-omap2/io.c -> x_voltagedomains_init()

    If you run the latest PSDK Linux (prebuilt/default kernel and DTB images) on AM335x TI board (EVM, SK, BBB, ICE), you will see the same error message.

    Regards,
    Pavel

  • Thanks for the information, Pavel.