prom.c (730fa039f16df58c2dc3ff2894b7d767f100cf6e) | prom.c (a0392222d9a374588803454c4d2211108c64d4e4) |
---|---|
1/* 2 * This program is free software; you can redistribute it and/or modify it 3 * under the terms of the GNU General Public License version 2 as published 4 * by the Free Software Foundation. 5 * 6 * Copyright (C) 2010 John Crispin <blogic@openwrt.org> 7 */ 8 9#include <linux/export.h> 10#include <linux/clk.h> | 1/* 2 * This program is free software; you can redistribute it and/or modify it 3 * under the terms of the GNU General Public License version 2 as published 4 * by the Free Software Foundation. 5 * 6 * Copyright (C) 2010 John Crispin <blogic@openwrt.org> 7 */ 8 9#include <linux/export.h> 10#include <linux/clk.h> |
11#include <linux/of_platform.h> |
|
11#include <asm/bootinfo.h> 12#include <asm/time.h> 13 14#include <lantiq.h> 15 16#include "prom.h" 17#include "clk.h" 18 | 12#include <asm/bootinfo.h> 13#include <asm/time.h> 14 15#include <lantiq.h> 16 17#include "prom.h" 18#include "clk.h" 19 |
20/* access to the ebu needs to be locked between different drivers */ 21DEFINE_SPINLOCK(ebu_lock); 22EXPORT_SYMBOL_GPL(ebu_lock); 23 24/* 25 * this struct is filled by the soc specific detection code and holds 26 * information about the specific soc type, revision and name 27 */ |
|
19static struct ltq_soc_info soc_info; 20 | 28static struct ltq_soc_info soc_info; 29 |
21unsigned int ltq_get_cpu_ver(void) 22{ 23 return soc_info.rev; 24} 25EXPORT_SYMBOL(ltq_get_cpu_ver); 26 | |
27unsigned int ltq_get_soc_type(void) 28{ 29 return soc_info.type; 30} 31EXPORT_SYMBOL(ltq_get_soc_type); 32 33const char *get_system_type(void) 34{ --- 17 unchanged lines hidden (view full) --- 52 53 if (CPHYSADDR(p) && *p) { 54 strlcat(arcs_cmdline, p, sizeof(arcs_cmdline)); 55 strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); 56 } 57 } 58} 59 | 30unsigned int ltq_get_soc_type(void) 31{ 32 return soc_info.type; 33} 34EXPORT_SYMBOL(ltq_get_soc_type); 35 36const char *get_system_type(void) 37{ --- 17 unchanged lines hidden (view full) --- 55 56 if (CPHYSADDR(p) && *p) { 57 strlcat(arcs_cmdline, p, sizeof(arcs_cmdline)); 58 strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); 59 } 60 } 61} 62 |
60void __init prom_init(void) | 63void __init plat_mem_setup(void) |
61{ | 64{ |
62 struct clk *clk; | 65 ioport_resource.start = IOPORT_RESOURCE_START; 66 ioport_resource.end = IOPORT_RESOURCE_END; 67 iomem_resource.start = IOMEM_RESOURCE_START; 68 iomem_resource.end = IOMEM_RESOURCE_END; |
63 | 69 |
70 set_io_port_base((unsigned long) KSEG1); 71 72 /* 73 * Load the builtin devicetree. This causes the chosen node to be 74 * parsed resulting in our memory appearing 75 */ 76 __dt_setup_arch(&__dtb_start); 77} 78 79void __init prom_init(void) 80{ 81 /* call the soc specific detetcion code and get it to fill soc_info */ |
|
64 ltq_soc_detect(&soc_info); | 82 ltq_soc_detect(&soc_info); |
65 clk_init(); 66 clk = clk_get(0, "cpu"); 67 snprintf(soc_info.sys_type, LTQ_SYS_TYPE_LEN - 1, "%s rev1.%d", 68 soc_info.name, soc_info.rev); 69 clk_put(clk); | 83 snprintf(soc_info.sys_type, LTQ_SYS_TYPE_LEN - 1, "%s rev %s", 84 soc_info.name, soc_info.rev_type); |
70 soc_info.sys_type[LTQ_SYS_TYPE_LEN - 1] = '\0'; 71 pr_info("SoC: %s\n", soc_info.sys_type); 72 prom_init_cmdline(); 73 74#if defined(CONFIG_MIPS_MT_SMP) 75 if (register_vsmp_smp_ops()) 76 panic("failed to register_vsmp_smp_ops()"); 77#endif 78} | 85 soc_info.sys_type[LTQ_SYS_TYPE_LEN - 1] = '\0'; 86 pr_info("SoC: %s\n", soc_info.sys_type); 87 prom_init_cmdline(); 88 89#if defined(CONFIG_MIPS_MT_SMP) 90 if (register_vsmp_smp_ops()) 91 panic("failed to register_vsmp_smp_ops()"); 92#endif 93} |
94 95int __init plat_of_setup(void) 96{ 97 static struct of_device_id of_ids[3]; 98 99 if (!of_have_populated_dt()) 100 panic("device tree not present"); 101 102 strncpy(of_ids[0].compatible, soc_info.compatible, 103 sizeof(of_ids[0].compatible)); 104 strncpy(of_ids[1].compatible, "simple-bus", 105 sizeof(of_ids[1].compatible)); 106 return of_platform_bus_probe(NULL, of_ids, NULL); 107} 108 109arch_initcall(plat_of_setup); |
|