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:
Linus Torvalds 2011-02-28 17:57:30 -08:00
commit 4f427634b1
8 changed files with 31 additions and 15 deletions

View File

@ -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, "

View File

@ -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)

View File

@ -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);
} }
} }

View File

@ -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;

View File

@ -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
/* /*

View File

@ -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));
} }

View File

@ -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);
} }

View File

@ -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);