forked from Minki/linux
Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: omap4: prcm: Fix the CPUx clockdomain offsets OMAP2+: clocksource: fix crash on boot when !CONFIG_OMAP_32K_TIMER OMAP2/3: clock: fix fint calculation for DPLL_FREQSEL OMAP2+: mailbox: fix lookups for multiple mailboxes OMAP2420: mailbox: fix IVA vs DSP IRQ numbering mach-omap2: smartreflex: world-writable debugfs voltage files mach-omap2: pm: world-writable debugfs timer files mach-omap2: mux: world-writable debugfs files
This commit is contained in:
commit
4f427634b1
@ -77,7 +77,7 @@ static int _dpll_test_fint(struct clk *clk, u8 n)
|
|||||||
dd = clk->dpll_data;
|
dd = clk->dpll_data;
|
||||||
|
|
||||||
/* DPLL divider must result in a valid jitter correction val */
|
/* DPLL divider must result in a valid jitter correction val */
|
||||||
fint = clk->parent->rate / (n + 1);
|
fint = clk->parent->rate / n;
|
||||||
if (fint < DPLL_FINT_BAND1_MIN) {
|
if (fint < DPLL_FINT_BAND1_MIN) {
|
||||||
|
|
||||||
pr_debug("rejecting n=%d due to Fint failure, "
|
pr_debug("rejecting n=%d due to Fint failure, "
|
||||||
|
@ -334,7 +334,7 @@ static struct omap_mbox mbox_iva_info = {
|
|||||||
.priv = &omap2_mbox_iva_priv,
|
.priv = &omap2_mbox_iva_priv,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct omap_mbox *omap2_mboxes[] = { &mbox_iva_info, &mbox_dsp_info, NULL };
|
struct omap_mbox *omap2_mboxes[] = { &mbox_dsp_info, &mbox_iva_info, NULL };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP4)
|
#if defined(CONFIG_ARCH_OMAP4)
|
||||||
|
@ -605,7 +605,7 @@ static void __init omap_mux_dbg_create_entry(
|
|||||||
list_for_each_entry(e, &partition->muxmodes, node) {
|
list_for_each_entry(e, &partition->muxmodes, node) {
|
||||||
struct omap_mux *m = &e->mux;
|
struct omap_mux *m = &e->mux;
|
||||||
|
|
||||||
(void)debugfs_create_file(m->muxnames[0], S_IWUGO, mux_dbg_dir,
|
(void)debugfs_create_file(m->muxnames[0], S_IWUSR, mux_dbg_dir,
|
||||||
m, &omap_mux_dbg_signal_fops);
|
m, &omap_mux_dbg_signal_fops);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -637,14 +637,14 @@ static int __init pm_dbg_init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) debugfs_create_file("enable_off_mode", S_IRUGO | S_IWUGO, d,
|
(void) debugfs_create_file("enable_off_mode", S_IRUGO | S_IWUSR, d,
|
||||||
&enable_off_mode, &pm_dbg_option_fops);
|
&enable_off_mode, &pm_dbg_option_fops);
|
||||||
(void) debugfs_create_file("sleep_while_idle", S_IRUGO | S_IWUGO, d,
|
(void) debugfs_create_file("sleep_while_idle", S_IRUGO | S_IWUSR, d,
|
||||||
&sleep_while_idle, &pm_dbg_option_fops);
|
&sleep_while_idle, &pm_dbg_option_fops);
|
||||||
(void) debugfs_create_file("wakeup_timer_seconds", S_IRUGO | S_IWUGO, d,
|
(void) debugfs_create_file("wakeup_timer_seconds", S_IRUGO | S_IWUSR, d,
|
||||||
&wakeup_timer_seconds, &pm_dbg_option_fops);
|
&wakeup_timer_seconds, &pm_dbg_option_fops);
|
||||||
(void) debugfs_create_file("wakeup_timer_milliseconds",
|
(void) debugfs_create_file("wakeup_timer_milliseconds",
|
||||||
S_IRUGO | S_IWUGO, d, &wakeup_timer_milliseconds,
|
S_IRUGO | S_IWUSR, d, &wakeup_timer_milliseconds,
|
||||||
&pm_dbg_option_fops);
|
&pm_dbg_option_fops);
|
||||||
pm_dbg_init_done = 1;
|
pm_dbg_init_done = 1;
|
||||||
|
|
||||||
|
@ -38,8 +38,8 @@
|
|||||||
#define OMAP4430_PRCM_MPU_CPU1_INST 0x0800
|
#define OMAP4430_PRCM_MPU_CPU1_INST 0x0800
|
||||||
|
|
||||||
/* PRCM_MPU clockdomain register offsets (from instance start) */
|
/* PRCM_MPU clockdomain register offsets (from instance start) */
|
||||||
#define OMAP4430_PRCM_MPU_CPU0_MPU_CDOFFS 0x0000
|
#define OMAP4430_PRCM_MPU_CPU0_MPU_CDOFFS 0x0018
|
||||||
#define OMAP4430_PRCM_MPU_CPU1_MPU_CDOFFS 0x0000
|
#define OMAP4430_PRCM_MPU_CPU1_MPU_CDOFFS 0x0018
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -900,7 +900,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||||||
return PTR_ERR(dbg_dir);
|
return PTR_ERR(dbg_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUGO, dbg_dir,
|
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir,
|
||||||
(void *)sr_info, &pm_sr_fops);
|
(void *)sr_info, &pm_sr_fops);
|
||||||
(void) debugfs_create_x32("errweight", S_IRUGO, dbg_dir,
|
(void) debugfs_create_x32("errweight", S_IRUGO, dbg_dir,
|
||||||
&sr_info->err_weight);
|
&sr_info->err_weight);
|
||||||
@ -939,7 +939,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||||||
strcpy(name, "volt_");
|
strcpy(name, "volt_");
|
||||||
sprintf(volt_name, "%d", volt_data[i].volt_nominal);
|
sprintf(volt_name, "%d", volt_data[i].volt_nominal);
|
||||||
strcat(name, volt_name);
|
strcat(name, volt_name);
|
||||||
(void) debugfs_create_x32(name, S_IRUGO | S_IWUGO, nvalue_dir,
|
(void) debugfs_create_x32(name, S_IRUGO | S_IWUSR, nvalue_dir,
|
||||||
&(sr_info->nvalue_table[i].nvalue));
|
&(sr_info->nvalue_table[i].nvalue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <asm/mach/time.h>
|
#include <asm/mach/time.h>
|
||||||
#include <plat/dmtimer.h>
|
#include <plat/dmtimer.h>
|
||||||
#include <asm/localtimer.h>
|
#include <asm/localtimer.h>
|
||||||
|
#include <asm/sched_clock.h>
|
||||||
|
|
||||||
#include "timer-gp.h"
|
#include "timer-gp.h"
|
||||||
|
|
||||||
@ -190,6 +191,7 @@ static void __init omap2_gp_clocksource_init(void)
|
|||||||
/*
|
/*
|
||||||
* clocksource
|
* clocksource
|
||||||
*/
|
*/
|
||||||
|
static DEFINE_CLOCK_DATA(cd);
|
||||||
static struct omap_dm_timer *gpt_clocksource;
|
static struct omap_dm_timer *gpt_clocksource;
|
||||||
static cycle_t clocksource_read_cycles(struct clocksource *cs)
|
static cycle_t clocksource_read_cycles(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
@ -204,6 +206,15 @@ static struct clocksource clocksource_gpt = {
|
|||||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void notrace dmtimer_update_sched_clock(void)
|
||||||
|
{
|
||||||
|
u32 cyc;
|
||||||
|
|
||||||
|
cyc = omap_dm_timer_read_counter(gpt_clocksource);
|
||||||
|
|
||||||
|
update_sched_clock(&cd, cyc, (u32)~0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Setup free-running counter for clocksource */
|
/* Setup free-running counter for clocksource */
|
||||||
static void __init omap2_gp_clocksource_init(void)
|
static void __init omap2_gp_clocksource_init(void)
|
||||||
{
|
{
|
||||||
@ -224,6 +235,8 @@ static void __init omap2_gp_clocksource_init(void)
|
|||||||
|
|
||||||
omap_dm_timer_set_load_start(gpt, 1, 0);
|
omap_dm_timer_set_load_start(gpt, 1, 0);
|
||||||
|
|
||||||
|
init_sched_clock(&cd, dmtimer_update_sched_clock, 32, tick_rate);
|
||||||
|
|
||||||
if (clocksource_register_hz(&clocksource_gpt, tick_rate))
|
if (clocksource_register_hz(&clocksource_gpt, tick_rate))
|
||||||
printk(err2, clocksource_gpt.name);
|
printk(err2, clocksource_gpt.name);
|
||||||
}
|
}
|
||||||
|
@ -322,15 +322,18 @@ static void omap_mbox_fini(struct omap_mbox *mbox)
|
|||||||
|
|
||||||
struct omap_mbox *omap_mbox_get(const char *name, struct notifier_block *nb)
|
struct omap_mbox *omap_mbox_get(const char *name, struct notifier_block *nb)
|
||||||
{
|
{
|
||||||
struct omap_mbox *mbox;
|
struct omap_mbox *_mbox, *mbox = NULL;
|
||||||
int ret;
|
int i, ret;
|
||||||
|
|
||||||
if (!mboxes)
|
if (!mboxes)
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
for (mbox = *mboxes; mbox; mbox++)
|
for (i = 0; (_mbox = mboxes[i]); i++) {
|
||||||
if (!strcmp(mbox->name, name))
|
if (!strcmp(_mbox->name, name)) {
|
||||||
|
mbox = _mbox;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!mbox)
|
if (!mbox)
|
||||||
return ERR_PTR(-ENOENT);
|
return ERR_PTR(-ENOENT);
|
||||||
|
Loading…
Reference in New Issue
Block a user