|
@@ -37,21 +37,16 @@ static struct dbx500_asic_id dbx500_id;
|
|
|
|
|
|
static unsigned int __init ux500_read_asicid(phys_addr_t addr)
|
|
|
{
|
|
|
- phys_addr_t base = addr & ~0xfff;
|
|
|
- struct map_desc desc = {
|
|
|
- .virtual = (unsigned long)UX500_VIRT_ROM,
|
|
|
- .pfn = __phys_to_pfn(base),
|
|
|
- .length = SZ_16K,
|
|
|
- .type = MT_DEVICE,
|
|
|
- };
|
|
|
+ void __iomem *virt = ioremap(addr, 4);
|
|
|
+ unsigned int asicid;
|
|
|
|
|
|
- iotable_init(&desc, 1);
|
|
|
+ if (!virt)
|
|
|
+ return 0;
|
|
|
|
|
|
- /* As in devicemaps_init() */
|
|
|
- local_flush_tlb_all();
|
|
|
- flush_cache_all();
|
|
|
+ asicid = readl(virt);
|
|
|
+ iounmap(virt);
|
|
|
|
|
|
- return readl(UX500_VIRT_ROM + (addr & 0xfff));
|
|
|
+ return asicid;
|
|
|
}
|
|
|
|
|
|
static void ux500_print_soc_info(unsigned int asicid)
|
|
@@ -86,7 +81,7 @@ static unsigned int partnumber(unsigned int asicid)
|
|
|
* DB9540 0x413fc090 0xFFFFDBF4 0x009540xx
|
|
|
*/
|
|
|
|
|
|
-void __init ux500_setup_id(void)
|
|
|
+static void __init ux500_setup_id(void)
|
|
|
{
|
|
|
unsigned int cpuid = read_cpuid_id();
|
|
|
unsigned int asicid = 0;
|
|
@@ -197,6 +192,8 @@ struct device * __init ux500_soc_device_init(void)
|
|
|
struct soc_device *soc_dev;
|
|
|
struct soc_device_attribute *soc_dev_attr;
|
|
|
|
|
|
+ ux500_setup_id();
|
|
|
+
|
|
|
soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
|
|
|
if (!soc_dev_attr)
|
|
|
return ERR_PTR(-ENOMEM);
|