lkml.org 
[lkml]   [2013]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 1/2] cpufreq: tegra: Call tegra_cpufreq_init() specifically in machine code
    Date
    Move the call from module_init to Tegra machine codes so it won't be
    called in a multi-platform kernel running on non-Tegra SoCs.

    Signed-off-by: Bill Huang <bilhuang@nvidia.com>
    ---
    arch/arm/mach-tegra/tegra.c | 2 ++
    drivers/cpufreq/tegra-cpufreq.c | 13 ++-----------
    include/linux/tegra-soc.h | 11 ++++++++++-
    3 files changed, 14 insertions(+), 12 deletions(-)

    diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c
    index 7336817..14490ad 100644
    --- a/arch/arm/mach-tegra/tegra.c
    +++ b/arch/arm/mach-tegra/tegra.c
    @@ -34,6 +34,7 @@
    #include <linux/usb/tegra_usb_phy.h>
    #include <linux/clk/tegra.h>
    #include <linux/irqchip.h>
    +#include <linux/tegra-soc.h>

    #include <asm/hardware/cache-l2x0.h>
    #include <asm/mach-types.h>
    @@ -160,6 +161,7 @@ static void __init tegra_dt_init_late(void)
    {
    int i;

    + tegra_cpufreq_init();
    tegra_init_suspend();
    tegra_cpuidle_init();
    tegra_powergate_debugfs_init();
    diff --git a/drivers/cpufreq/tegra-cpufreq.c b/drivers/cpufreq/tegra-cpufreq.c
    index 63f0059..ae1c0f1 100644
    --- a/drivers/cpufreq/tegra-cpufreq.c
    +++ b/drivers/cpufreq/tegra-cpufreq.c
    @@ -155,7 +155,7 @@ static struct cpufreq_driver tegra_cpufreq_driver = {
    #endif
    };

    -static int __init tegra_cpufreq_init(void)
    +int __init tegra_cpufreq_init(void)
    {
    cpu_clk = clk_get_sys(NULL, "cclk");
    if (IS_ERR(cpu_clk))
    @@ -177,17 +177,8 @@ static int __init tegra_cpufreq_init(void)

    return cpufreq_register_driver(&tegra_cpufreq_driver);
    }
    -
    -static void __exit tegra_cpufreq_exit(void)
    -{
    - cpufreq_unregister_driver(&tegra_cpufreq_driver);
    - clk_put(emc_clk);
    - clk_put(cpu_clk);
    -}
    -
    +EXPORT_SYMBOL(tegra_cpufreq_init);

    MODULE_AUTHOR("Colin Cross <ccross@android.com>");
    MODULE_DESCRIPTION("cpufreq driver for Nvidia Tegra2");
    MODULE_LICENSE("GPL");
    -module_init(tegra_cpufreq_init);
    -module_exit(tegra_cpufreq_exit);
    diff --git a/include/linux/tegra-soc.h b/include/linux/tegra-soc.h
    index 95f611d..a179aa5 100644
    --- a/include/linux/tegra-soc.h
    +++ b/include/linux/tegra-soc.h
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
    + * Copyright (c) 2012,2013, NVIDIA CORPORATION. All rights reserved.
    *
    * This program is free software; you can redistribute it and/or modify it
    * under the terms and conditions of the GNU General Public License,
    @@ -17,6 +17,15 @@
    #ifndef __LINUX_TEGRA_SOC_H_
    #define __LINUX_TEGRA_SOC_H_

    +#ifdef CONFIG_ARM_TEGRA_CPUFREQ
    +int tegra_cpufreq_init(void);
    +#else
    +static inline int tegra_cpufreq_init(void)
    +{
    + return -EINVAL;
    +}
    +#endif
    +
    u32 tegra_read_chipid(void);

    #endif /* __LINUX_TEGRA_SOC_H_ */
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2013-12-05 09:01    [W:4.608 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site