Linux Audio

Check our new training course

Loading...
v6.8
  1/*
  2 * This file is subject to the terms and conditions of the GNU General Public
  3 * License.  See the file "COPYING" in the main directory of this archive
  4 * for more details.
  5 *
  6 * identify.c: identify machine by looking up system identifier
  7 *
  8 * Copyright (C) 1998 Thomas Bogendoerfer
  9 *
 10 * This code is based on arch/mips/sgi/kernel/system.c, which is
 11 *
 12 * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
 13 */
 14#include <linux/bug.h>
 15#include <linux/init.h>
 16#include <linux/kernel.h>
 17#include <linux/types.h>
 18#include <linux/string.h>
 19
 20#include <asm/sgialib.h>
 21#include <asm/bootinfo.h>
 22
 23struct smatch {
 24	char *arcname;
 25	char *liname;
 26	int flags;
 27};
 28
 29static struct smatch mach_table[] = {
 30	{
 31		.arcname	= "SGI-IP22",
 32		.liname		= "SGI Indy",
 33		.flags		= PROM_FLAG_ARCS,
 34	}, {
 35		.arcname	= "SGI-IP28",
 36		.liname		= "SGI IP28",
 37		.flags		= PROM_FLAG_ARCS,
 38	}, {
 39		.arcname	= "SGI-IP30",
 40		.liname		= "SGI Octane",
 41		.flags		= PROM_FLAG_ARCS,
 42	}, {
 43		.arcname	= "SGI-IP32",
 44		.liname		= "SGI O2",
 45		.flags		= PROM_FLAG_ARCS,
 46	}, {
 47		.arcname	= "Microsoft-Jazz",
 48		.liname		= "Jazz MIPS_Magnum_4000",
 49		.flags		= 0,
 50	}, {
 51		.arcname	= "PICA-61",
 52		.liname		= "Jazz Acer_PICA_61",
 53		.flags		= 0,
 54	}, {
 55		.arcname	= "RM200PCI",
 56		.liname		= "SNI RM200_PCI",
 57		.flags		= PROM_FLAG_DONT_FREE_TEMP,
 58	}, {
 59		.arcname	= "RM200PCI-R5K",
 60		.liname		= "SNI RM200_PCI-R5K",
 61		.flags		= PROM_FLAG_DONT_FREE_TEMP,
 62	}
 63};
 64
 65int prom_flags;
 66
 67static struct smatch * __init string_to_mach(const char *s)
 68{
 69	int i;
 70
 71	for (i = 0; i < ARRAY_SIZE(mach_table); i++) {
 72		if (!strcmp(s, mach_table[i].arcname))
 73			return &mach_table[i];
 74	}
 75
 76	panic("Yeee, could not determine architecture type <%s>", s);
 77}
 78
 79char *system_type;
 80
 81const char *get_system_type(void)
 82{
 83	return system_type;
 84}
 85
 86static pcomponent * __init ArcGetChild(pcomponent *Current)
 87{
 88	return (pcomponent *) ARC_CALL1(child_component, Current);
 89}
 90
 91void __init prom_identify_arch(void)
 92{
 93	pcomponent *p;
 94	struct smatch *mach;
 95	const char *iname;
 96
 97	/*
 98	 * The root component tells us what machine architecture we have here.
 99	 */
100	p = ArcGetChild(PROM_NULL_COMPONENT);
101	if (p == NULL) {
102		iname = "Unknown";
103	} else
104		iname = (char *) (long) p->iname;
105
106	printk("ARCH: %s\n", iname);
107	mach = string_to_mach(iname);
108	system_type = mach->liname;
109
110	prom_flags = mach->flags;
111}
v6.13.7
  1/*
  2 * This file is subject to the terms and conditions of the GNU General Public
  3 * License.  See the file "COPYING" in the main directory of this archive
  4 * for more details.
  5 *
  6 * identify.c: identify machine by looking up system identifier
  7 *
  8 * Copyright (C) 1998 Thomas Bogendoerfer
  9 *
 10 * This code is based on arch/mips/sgi/kernel/system.c, which is
 11 *
 12 * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
 13 */
 14#include <linux/bug.h>
 15#include <linux/init.h>
 16#include <linux/kernel.h>
 17#include <linux/types.h>
 18#include <linux/string.h>
 19
 20#include <asm/sgialib.h>
 21#include <asm/bootinfo.h>
 22
 23struct smatch {
 24	char *arcname;
 25	char *liname;
 26	int flags;
 27};
 28
 29static struct smatch mach_table[] = {
 30	{
 31		.arcname	= "SGI-IP22",
 32		.liname		= "SGI Indy",
 33		.flags		= PROM_FLAG_ARCS,
 34	}, {
 35		.arcname	= "SGI-IP28",
 36		.liname		= "SGI IP28",
 37		.flags		= PROM_FLAG_ARCS,
 38	}, {
 39		.arcname	= "SGI-IP30",
 40		.liname		= "SGI Octane",
 41		.flags		= PROM_FLAG_ARCS,
 42	}, {
 43		.arcname	= "SGI-IP32",
 44		.liname		= "SGI O2",
 45		.flags		= PROM_FLAG_ARCS,
 46	}, {
 47		.arcname	= "Microsoft-Jazz",
 48		.liname		= "Jazz MIPS_Magnum_4000",
 49		.flags		= 0,
 50	}, {
 51		.arcname	= "PICA-61",
 52		.liname		= "Jazz Acer_PICA_61",
 53		.flags		= 0,
 54	}, {
 55		.arcname	= "RM200PCI",
 56		.liname		= "SNI RM200_PCI",
 57		.flags		= PROM_FLAG_DONT_FREE_TEMP,
 58	}, {
 59		.arcname	= "RM200PCI-R5K",
 60		.liname		= "SNI RM200_PCI-R5K",
 61		.flags		= PROM_FLAG_DONT_FREE_TEMP,
 62	}
 63};
 64
 65int prom_flags;
 66
 67static struct smatch * __init string_to_mach(const char *s)
 68{
 69	int i;
 70
 71	for (i = 0; i < ARRAY_SIZE(mach_table); i++) {
 72		if (!strcmp(s, mach_table[i].arcname))
 73			return &mach_table[i];
 74	}
 75
 76	panic("Yeee, could not determine architecture type <%s>", s);
 77}
 78
 79char *system_type;
 80
 81const char *get_system_type(void)
 82{
 83	return system_type;
 84}
 85
 86static pcomponent * __init ArcGetChild(pcomponent *Current)
 87{
 88	return (pcomponent *) ARC_CALL1(child_component, Current);
 89}
 90
 91void __init prom_identify_arch(void)
 92{
 93	pcomponent *p;
 94	struct smatch *mach;
 95	const char *iname;
 96
 97	/*
 98	 * The root component tells us what machine architecture we have here.
 99	 */
100	p = ArcGetChild(PROM_NULL_COMPONENT);
101	if (p == NULL) {
102		iname = "Unknown";
103	} else
104		iname = (char *) (long) p->iname;
105
106	printk("ARCH: %s\n", iname);
107	mach = string_to_mach(iname);
108	system_type = mach->liname;
109
110	prom_flags = mach->flags;
111}