diff options
Diffstat (limited to 'arch/cris/arch-v32/mach-a3')
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/Kconfig | 4 | ||||
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/Makefile | 3 | ||||
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/arbiter.c | 4 | ||||
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/cpufreq.c | 152 | ||||
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/vcs_hook.c | 103 | ||||
| -rw-r--r-- | arch/cris/arch-v32/mach-a3/vcs_hook.h | 58 |
6 files changed, 2 insertions, 322 deletions
diff --git a/arch/cris/arch-v32/mach-a3/Kconfig b/arch/cris/arch-v32/mach-a3/Kconfig index 7796aafc711..87547271a59 100644 --- a/arch/cris/arch-v32/mach-a3/Kconfig +++ b/arch/cris/arch-v32/mach-a3/Kconfig @@ -15,10 +15,6 @@ config ETRAX_SERIAL_PORTS int default 5 -config ETRAX_DDR - bool - default y - config ETRAX_DDR2_MRS hex "DDR2 MRS" default "0" diff --git a/arch/cris/arch-v32/mach-a3/Makefile b/arch/cris/arch-v32/mach-a3/Makefile index 41fa6a6893a..18a227196a4 100644 --- a/arch/cris/arch-v32/mach-a3/Makefile +++ b/arch/cris/arch-v32/mach-a3/Makefile @@ -1,11 +1,8 @@ -# $Id: Makefile,v 1.3 2007/03/13 11:57:46 starvik Exp $ # # Makefile for the linux kernel. # obj-y := dma.o pinmux.o io.o arbiter.o -obj-$(CONFIG_ETRAX_VCS_SIM) += vcs_hook.o -obj-$(CONFIG_CPU_FREQ) += cpufreq.o clean: diff --git a/arch/cris/arch-v32/mach-a3/arbiter.c b/arch/cris/arch-v32/mach-a3/arbiter.c index 15f5c9de263..ab5c421a4de 100644 --- a/arch/cris/arch-v32/mach-a3/arbiter.c +++ b/arch/cris/arch-v32/mach-a3/arbiter.c @@ -256,11 +256,11 @@ static void crisv32_arbiter_init(void) crisv32_arbiter_config(1, EXT_REGION, 0); if (request_irq(MEMARB_FOO_INTR_VECT, crisv32_foo_arbiter_irq, - IRQF_DISABLED, "arbiter", NULL)) + 0, "arbiter", NULL)) printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); if (request_irq(MEMARB_BAR_INTR_VECT, crisv32_bar_arbiter_irq, - IRQF_DISABLED, "arbiter", NULL)) + 0, "arbiter", NULL)) printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); #ifndef CONFIG_ETRAX_KGDB diff --git a/arch/cris/arch-v32/mach-a3/cpufreq.c b/arch/cris/arch-v32/mach-a3/cpufreq.c deleted file mode 100644 index ee391ecb5bc..00000000000 --- a/arch/cris/arch-v32/mach-a3/cpufreq.c +++ /dev/null @@ -1,152 +0,0 @@ -#include <linux/init.h> -#include <linux/module.h> -#include <linux/cpufreq.h> -#include <hwregs/reg_map.h> -#include <hwregs/reg_rdwr.h> -#include <hwregs/clkgen_defs.h> -#include <hwregs/ddr2_defs.h> - -static int -cris_sdram_freq_notifier(struct notifier_block *nb, unsigned long val, - void *data); - -static struct notifier_block cris_sdram_freq_notifier_block = { - .notifier_call = cris_sdram_freq_notifier -}; - -static struct cpufreq_frequency_table cris_freq_table[] = { - {0x01, 6000}, - {0x02, 200000}, - {0, CPUFREQ_TABLE_END}, -}; - -static unsigned int cris_freq_get_cpu_frequency(unsigned int cpu) -{ - reg_clkgen_rw_clk_ctrl clk_ctrl; - clk_ctrl = REG_RD(clkgen, regi_clkgen, rw_clk_ctrl); - return clk_ctrl.pll ? 200000 : 6000; -} - -static void cris_freq_set_cpu_state(unsigned int state) -{ - int i = 0; - struct cpufreq_freqs freqs; - reg_clkgen_rw_clk_ctrl clk_ctrl; - clk_ctrl = REG_RD(clkgen, regi_clkgen, rw_clk_ctrl); - -#ifdef CONFIG_SMP - for_each_present_cpu(i) -#endif - { - freqs.old = cris_freq_get_cpu_frequency(i); - freqs.new = cris_freq_table[state].frequency; - freqs.cpu = i; - } - - cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); - - local_irq_disable(); - - /* Even though we may be SMP they will share the same clock - * so all settings are made on CPU0. */ - if (cris_freq_table[state].frequency == 200000) - clk_ctrl.pll = 1; - else - clk_ctrl.pll = 0; - REG_WR(clkgen, regi_clkgen, rw_clk_ctrl, clk_ctrl); - - local_irq_enable(); - - cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); -}; - -static int cris_freq_verify(struct cpufreq_policy *policy) -{ - return cpufreq_frequency_table_verify(policy, &cris_freq_table[0]); -} - -static int cris_freq_target(struct cpufreq_policy *policy, - unsigned int target_freq, - unsigned int relation) -{ - unsigned int newstate = 0; - - if (cpufreq_frequency_table_target(policy, cris_freq_table, - target_freq, relation, &newstate)) - return -EINVAL; - - cris_freq_set_cpu_state(newstate); - - return 0; -} - -static int cris_freq_cpu_init(struct cpufreq_policy *policy) -{ - int result; - - /* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency = 1000000; /* 1ms */ - policy->cur = cris_freq_get_cpu_frequency(0); - - result = cpufreq_frequency_table_cpuinfo(policy, cris_freq_table); - if (result) - return (result); - - cpufreq_frequency_table_get_attr(cris_freq_table, policy->cpu); - - return 0; -} - - -static int cris_freq_cpu_exit(struct cpufreq_policy *policy) -{ - cpufreq_frequency_table_put_attr(policy->cpu); - return 0; -} - - -static struct freq_attr *cris_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, - NULL, -}; - -static struct cpufreq_driver cris_freq_driver = { - .get = cris_freq_get_cpu_frequency, - .verify = cris_freq_verify, - .target = cris_freq_target, - .init = cris_freq_cpu_init, - .exit = cris_freq_cpu_exit, - .name = "cris_freq", - .owner = THIS_MODULE, - .attr = cris_freq_attr, -}; - -static int __init cris_freq_init(void) -{ - int ret; - ret = cpufreq_register_driver(&cris_freq_driver); - cpufreq_register_notifier(&cris_sdram_freq_notifier_block, - CPUFREQ_TRANSITION_NOTIFIER); - return ret; -} - -static int -cris_sdram_freq_notifier(struct notifier_block *nb, unsigned long val, - void *data) -{ - int i; - struct cpufreq_freqs *freqs = data; - if (val == CPUFREQ_PRECHANGE) { - reg_ddr2_rw_cfg cfg = - REG_RD(ddr2, regi_ddr2_ctrl, rw_cfg); - cfg.ref_interval = (freqs->new == 200000 ? 1560 : 46); - - if (freqs->new == 200000) - for (i = 0; i < 50000; i++); - REG_WR(bif_core, regi_bif_core, rw_sdram_timing, timing); - } - return 0; -} - - -module_init(cris_freq_init); diff --git a/arch/cris/arch-v32/mach-a3/vcs_hook.c b/arch/cris/arch-v32/mach-a3/vcs_hook.c deleted file mode 100644 index 58b1a5469fd..00000000000 --- a/arch/cris/arch-v32/mach-a3/vcs_hook.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Simulator hook mechanism - */ - -#include "vcs_hook.h" -#include <asm/io.h> -#include <stdarg.h> - -#define HOOK_TRIG_ADDR 0xb7000000 -#define HOOK_MEM_BASE_ADDR 0xce000000 - -static volatile unsigned *hook_base; - -#define HOOK_DATA(offset) hook_base[offset] -#define VHOOK_DATA(offset) hook_base[offset] -#define HOOK_TRIG(funcid) \ - do { \ - *((unsigned *) HOOK_TRIG_ADDR) = funcid; \ - } while (0) -#define HOOK_DATA_BYTE(offset) ((unsigned char *)hook_base)[offset] - -static void hook_init(void) -{ - static int first = 1; - if (first) { - first = 0; - hook_base = ioremap(HOOK_MEM_BASE_ADDR, 8192); - } -} - -static unsigned hook_trig(unsigned id) -{ - unsigned ret; - - /* preempt_disable(); */ - - /* Dummy read from mem to make sure data has propagated to memory - * before trigging */ - ret = *hook_base; - - /* trigger hook */ - HOOK_TRIG(id); - - /* wait for call to finish */ - while (VHOOK_DATA(0) > 0) ; - - /* extract return value */ - - ret = VHOOK_DATA(1); - - return ret; -} - -int hook_call(unsigned id, unsigned pcnt, ...) -{ - va_list ap; - int i; - unsigned ret; - - hook_init(); - - HOOK_DATA(0) = id; - - va_start(ap, pcnt); - for (i = 1; i <= pcnt; i++) - HOOK_DATA(i) = va_arg(ap, unsigned); - va_end(ap); - - ret = hook_trig(id); - - return ret; -} - -int hook_call_str(unsigned id, unsigned size, const char *str) -{ - int i; - unsigned ret; - - hook_init(); - - HOOK_DATA(0) = id; - HOOK_DATA(1) = size; - - for (i = 0; i < size; i++) - HOOK_DATA_BYTE(8 + i) = str[i]; - HOOK_DATA_BYTE(8 + i) = 0; - - ret = hook_trig(id); - - return ret; -} - -void print_str(const char *str) -{ - int i; - /* find null at end of string */ - for (i = 1; str[i]; i++) ; - hook_call(hook_print_str, i, str); -} - -void CPU_WATCHDOG_TIMEOUT(unsigned t) -{ -} diff --git a/arch/cris/arch-v32/mach-a3/vcs_hook.h b/arch/cris/arch-v32/mach-a3/vcs_hook.h deleted file mode 100644 index 8b73d0e8392..00000000000 --- a/arch/cris/arch-v32/mach-a3/vcs_hook.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Simulator hook call mechanism - */ - -#ifndef __hook_h__ -#define __hook_h__ - -int hook_call(unsigned id, unsigned pcnt, ...); -int hook_call_str(unsigned id, unsigned size, const char *str); - -enum hook_ids { - hook_debug_on = 1, - hook_debug_off, - hook_stop_sim_ok, - hook_stop_sim_fail, - hook_alloc_shared, - hook_ptr_shared, - hook_free_shared, - hook_file2shared, - hook_cmp_shared, - hook_print_params, - hook_sim_time, - hook_stop_sim, - hook_kick_dog, - hook_dog_timeout, - hook_rand, - hook_srand, - hook_rand_range, - hook_print_str, - hook_print_hex, - hook_cmp_offset_shared, - hook_fill_random_shared, - hook_alloc_random_data, - hook_calloc_random_data, - hook_print_int, - hook_print_uint, - hook_fputc, - hook_init_fd, - hook_sbrk, - hook_print_context_descr, - hook_print_data_descr, - hook_print_group_descr, - hook_fill_shared, - hook_sl_srand, - hook_sl_rand_irange, - hook_sl_rand_urange, - hook_sl_sh_malloc_aligned, - hook_sl_sh_calloc_aligned, - hook_sl_sh_alloc_random_data, - hook_sl_sh_file2mem, - hook_sl_vera_mbox_handle, - hook_sl_vera_mbox_put, - hook_sl_vera_mbox_get, - hook_sl_system, - hook_sl_sh_hexdump -}; - -#endif |
