static int show_cpuinfo(struct seq_file *m, void *v) { struct sh_cpuinfo *c = v; unsigned int cpu = c - cpu_data; if (!cpu_online(cpu)) return 0; if (cpu == 0) seq_printf(m, "machine\t\t: %s\n", get_system_type()); else seq_printf(m, "\n"); seq_printf(m, "processor\t: %d\n", cpu); seq_printf(m, "cpu family\t: %s\n", init_utsname()->machine); seq_printf(m, "cpu type\t: %s\n", get_cpu_subtype(c)); if (c->cut_major == -1) seq_printf(m, "cut\t\t: unknown\n"); else if (c->cut_minor == -1) seq_printf(m, "cut\t\t: %d.x\n", c->cut_major); else seq_printf(m, "cut\t\t: %d.%d\n", c->cut_major, c->cut_minor); show_cpuflags(m, c); seq_printf(m, "cache type\t: "); if (c->icache.flags & SH_CACHE_COMBINED) { seq_printf(m, "unified\n"); show_cacheinfo(m, "cache", c->icache); } else { seq_printf(m, "split (harvard)\n"); show_cacheinfo(m, "icache", c->icache); show_cacheinfo(m, "dcache", c->dcache); } if (c->flags & CPU_HAS_L2_CACHE) show_cacheinfo(m, "scache", c->scache); seq_printf(m, "address sizes\t: %u bits physical\n", c->phys_bits); seq_printf(m, "bogomips\t: %lu.%02lu\n", c->loops_per_jiffy/(500000/HZ), (c->loops_per_jiffy/(5000/HZ)) % 100); return 0; }
int __init oprofile_arch_init(struct oprofile_operations **ops) { if (!(current_cpu_data.flags & CPU_HAS_PERF_COUNTER)) return -ENODEV; sh7750_perf_counter_ops.cpu_type = (char *)get_cpu_subtype(); *ops = &sh7750_perf_counter_ops; printk(KERN_INFO "oprofile: using SH-4 (%s) performance monitoring.\n", sh7750_perf_counter_ops.cpu_type); /* Clear the counters */ ctrl_outw(ctrl_inw(PMCR1) | PMCR_PMCLR, PMCR1); ctrl_outw(ctrl_inw(PMCR2) | PMCR_PMCLR, PMCR2); return 0; }
/* * Get CPU information for use by the procfs. */ static int show_cpuinfo(struct seq_file *m, void *v) { unsigned int cpu = smp_processor_id(); if (!cpu && cpu_online(cpu)) seq_printf(m, "machine\t\t: %s\n", get_system_type()); seq_printf(m, "processor\t: %d\n", cpu); seq_printf(m, "cpu family\t: %s\n", system_utsname.machine); seq_printf(m, "cpu type\t: %s\n", get_cpu_subtype()); show_cpuflags(m); seq_printf(m, "cache type\t: "); /* * Check for what type of cache we have, we support both the * unified cache on the SH-2 and SH-3, as well as the harvard * style cache on the SH-4. */ if (test_bit(SH_CACHE_COMBINED, &(boot_cpu_data.icache.flags))) { seq_printf(m, "unified\n"); show_cacheinfo(m, "cache", boot_cpu_data.icache); } else { seq_printf(m, "split (harvard)\n"); show_cacheinfo(m, "icache", boot_cpu_data.icache); show_cacheinfo(m, "dcache", boot_cpu_data.dcache); } seq_printf(m, "bogomips\t: %lu.%02lu\n", boot_cpu_data.loops_per_jiffy/(500000/HZ), (boot_cpu_data.loops_per_jiffy/(5000/HZ)) % 100); #define PRINT_CLOCK(name, value) \ seq_printf(m, name " clock\t: %d.%02dMHz\n", \ ((value) / 1000000), ((value) % 1000000)/10000) PRINT_CLOCK("cpu", boot_cpu_data.cpu_clock); PRINT_CLOCK("bus", boot_cpu_data.bus_clock); #ifdef CONFIG_CPU_SUBTYPE_ST40STB1 PRINT_CLOCK("memory", boot_cpu_data.memory_clock); #endif PRINT_CLOCK("module", boot_cpu_data.module_clock); return 0; }
/* * Get CPU information for use by the procfs. */ static int show_cpuinfo(struct seq_file *m, void *v) { struct sh_cpuinfo *c = v; unsigned int cpu = c - cpu_data; if (!cpu_online(cpu)) return 0; if (cpu == 0) seq_printf(m, "machine\t\t: %s\n", get_system_type()); seq_printf(m, "processor\t: %d\n", cpu); seq_printf(m, "cpu family\t: %s\n", init_utsname()->machine); seq_printf(m, "cpu type\t: %s\n", get_cpu_subtype(c)); show_cpuflags(m, c); seq_printf(m, "cache type\t: "); /* * Check for what type of cache we have, we support both the * unified cache on the SH-2 and SH-3, as well as the harvard * style cache on the SH-4. */ if (c->icache.flags & SH_CACHE_COMBINED) { seq_printf(m, "unified\n"); show_cacheinfo(m, "cache", c->icache); } else { seq_printf(m, "split (harvard)\n"); show_cacheinfo(m, "icache", c->icache); show_cacheinfo(m, "dcache", c->dcache); } /* Optional secondary cache */ if (c->flags & CPU_HAS_L2_CACHE) show_cacheinfo(m, "scache", c->scache); seq_printf(m, "bogomips\t: %lu.%02lu\n", c->loops_per_jiffy/(500000/HZ), (c->loops_per_jiffy/(5000/HZ)) % 100); return 0; }
static int fdma_do_bootload(struct fdma *fdma) { int err; int result; result = snprintf(fdma->fw_name, sizeof(fdma->fw_name), "fdma_%s_%d.elf", get_cpu_subtype(¤t_cpu_data), (fdma->pdev->id == -1) ? 0 : fdma->pdev->id); BUG_ON(result >= sizeof(fdma->fw_name)); /* was the string truncated? */ fdma_dbg(fdma, "FDMA: Loading ELF Firmware (%s)...\n", fdma->fw_name); err = request_firmware_nowait(THIS_MODULE, 1, fdma->fw_name, &fdma->pdev->dev, (struct fdma *)fdma, (void *)fdma_load_elf); if (err) return -ENOMEM; wake_up(&fdma->fw_load_q); return 0; }