Linux Audio

Check our new training course

Loading...
v4.6
  1/*
  2 *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
  3 *
  4 *  Modifications for ppc64:
  5 *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
  6 *
  7 *  This program is free software; you can redistribute it and/or
  8 *  modify it under the terms of the GNU General Public License
  9 *  as published by the Free Software Foundation; either version
 10 *  2 of the License, or (at your option) any later version.
 11 */
 12#ifndef __ASM_POWERPC_FIRMWARE_H
 13#define __ASM_POWERPC_FIRMWARE_H
 14
 15#ifdef __KERNEL__
 16
 17#include <asm/asm-compat.h>
 18#include <asm/feature-fixups.h>
 19
 20/* firmware feature bitmask values */
 
 21
 22#define FW_FEATURE_PFT		ASM_CONST(0x0000000000000001)
 23#define FW_FEATURE_TCE		ASM_CONST(0x0000000000000002)
 24#define FW_FEATURE_SPRG0	ASM_CONST(0x0000000000000004)
 25#define FW_FEATURE_DABR		ASM_CONST(0x0000000000000008)
 26#define FW_FEATURE_COPY		ASM_CONST(0x0000000000000010)
 27#define FW_FEATURE_ASR		ASM_CONST(0x0000000000000020)
 28#define FW_FEATURE_DEBUG	ASM_CONST(0x0000000000000040)
 29#define FW_FEATURE_TERM		ASM_CONST(0x0000000000000080)
 30#define FW_FEATURE_PERF		ASM_CONST(0x0000000000000100)
 31#define FW_FEATURE_DUMP		ASM_CONST(0x0000000000000200)
 32#define FW_FEATURE_INTERRUPT	ASM_CONST(0x0000000000000400)
 33#define FW_FEATURE_MIGRATE	ASM_CONST(0x0000000000000800)
 34#define FW_FEATURE_PERFMON	ASM_CONST(0x0000000000001000)
 35#define FW_FEATURE_CRQ		ASM_CONST(0x0000000000002000)
 36#define FW_FEATURE_VIO		ASM_CONST(0x0000000000004000)
 37#define FW_FEATURE_RDMA		ASM_CONST(0x0000000000008000)
 38#define FW_FEATURE_LLAN		ASM_CONST(0x0000000000010000)
 39#define FW_FEATURE_BULK_REMOVE	ASM_CONST(0x0000000000020000)
 40#define FW_FEATURE_XDABR	ASM_CONST(0x0000000000040000)
 41#define FW_FEATURE_MULTITCE	ASM_CONST(0x0000000000080000)
 42#define FW_FEATURE_SPLPAR	ASM_CONST(0x0000000000100000)
 
 43#define FW_FEATURE_LPAR		ASM_CONST(0x0000000000400000)
 44#define FW_FEATURE_PS3_LV1	ASM_CONST(0x0000000000800000)
 45/* Free				ASM_CONST(0x0000000001000000) */
 46#define FW_FEATURE_CMO		ASM_CONST(0x0000000002000000)
 47#define FW_FEATURE_VPHN		ASM_CONST(0x0000000004000000)
 48#define FW_FEATURE_XCMO		ASM_CONST(0x0000000008000000)
 49#define FW_FEATURE_OPAL		ASM_CONST(0x0000000010000000)
 50#define FW_FEATURE_SET_MODE	ASM_CONST(0x0000000040000000)
 51#define FW_FEATURE_BEST_ENERGY	ASM_CONST(0x0000000080000000)
 52#define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000)
 53#define FW_FEATURE_PRRN		ASM_CONST(0x0000000200000000)
 54
 55#ifndef __ASSEMBLY__
 56
 57enum {
 58#ifdef CONFIG_PPC64
 59	FW_FEATURE_PSERIES_POSSIBLE = FW_FEATURE_PFT | FW_FEATURE_TCE |
 60		FW_FEATURE_SPRG0 | FW_FEATURE_DABR | FW_FEATURE_COPY |
 61		FW_FEATURE_ASR | FW_FEATURE_DEBUG | FW_FEATURE_TERM |
 62		FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT |
 63		FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ |
 64		FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN |
 65		FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR |
 66		FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
 67		FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
 68		FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY |
 69		FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN,
 70	FW_FEATURE_PSERIES_ALWAYS = 0,
 71	FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL,
 72	FW_FEATURE_POWERNV_ALWAYS = 0,
 73	FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
 74	FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
 
 
 75	FW_FEATURE_NATIVE_POSSIBLE = 0,
 76	FW_FEATURE_NATIVE_ALWAYS = 0,
 77	FW_FEATURE_POSSIBLE =
 78#ifdef CONFIG_PPC_PSERIES
 79		FW_FEATURE_PSERIES_POSSIBLE |
 80#endif
 81#ifdef CONFIG_PPC_POWERNV
 82		FW_FEATURE_POWERNV_POSSIBLE |
 83#endif
 84#ifdef CONFIG_PPC_PS3
 85		FW_FEATURE_PS3_POSSIBLE |
 86#endif
 
 
 
 87#ifdef CONFIG_PPC_NATIVE
 88		FW_FEATURE_NATIVE_ALWAYS |
 89#endif
 90		0,
 91	FW_FEATURE_ALWAYS =
 92#ifdef CONFIG_PPC_PSERIES
 93		FW_FEATURE_PSERIES_ALWAYS &
 94#endif
 95#ifdef CONFIG_PPC_POWERNV
 96		FW_FEATURE_POWERNV_ALWAYS &
 97#endif
 98#ifdef CONFIG_PPC_PS3
 99		FW_FEATURE_PS3_ALWAYS &
 
 
 
100#endif
101#ifdef CONFIG_PPC_NATIVE
102		FW_FEATURE_NATIVE_ALWAYS &
103#endif
104		FW_FEATURE_POSSIBLE,
105
106#else /* CONFIG_PPC64 */
107	FW_FEATURE_POSSIBLE = 0,
108	FW_FEATURE_ALWAYS = 0,
109#endif
110};
111
112/* This is used to identify firmware features which are available
113 * to the kernel.
114 */
115extern unsigned long	powerpc_firmware_features;
116
117#define firmware_has_feature(feature)					\
118	((FW_FEATURE_ALWAYS & (feature)) ||				\
119		(FW_FEATURE_POSSIBLE & powerpc_firmware_features & (feature)))
120
121extern void system_reset_fwnmi(void);
122extern void machine_check_fwnmi(void);
123
124/* This is true if we are using the firmware NMI handler (typically LPAR) */
125extern int fwnmi_active;
126
127extern unsigned int __start___fw_ftr_fixup, __stop___fw_ftr_fixup;
128
129#endif /* __ASSEMBLY__ */
130#endif /* __KERNEL__ */
131#endif /* __ASM_POWERPC_FIRMWARE_H */
v3.1
  1/*
  2 *  Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
  3 *
  4 *  Modifications for ppc64:
  5 *      Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
  6 *
  7 *  This program is free software; you can redistribute it and/or
  8 *  modify it under the terms of the GNU General Public License
  9 *  as published by the Free Software Foundation; either version
 10 *  2 of the License, or (at your option) any later version.
 11 */
 12#ifndef __ASM_POWERPC_FIRMWARE_H
 13#define __ASM_POWERPC_FIRMWARE_H
 14
 15#ifdef __KERNEL__
 16
 17#include <asm/asm-compat.h>
 18#include <asm/feature-fixups.h>
 19
 20/* firmware feature bitmask values */
 21#define FIRMWARE_MAX_FEATURES 63
 22
 23#define FW_FEATURE_PFT		ASM_CONST(0x0000000000000001)
 24#define FW_FEATURE_TCE		ASM_CONST(0x0000000000000002)
 25#define FW_FEATURE_SPRG0	ASM_CONST(0x0000000000000004)
 26#define FW_FEATURE_DABR		ASM_CONST(0x0000000000000008)
 27#define FW_FEATURE_COPY		ASM_CONST(0x0000000000000010)
 28#define FW_FEATURE_ASR		ASM_CONST(0x0000000000000020)
 29#define FW_FEATURE_DEBUG	ASM_CONST(0x0000000000000040)
 30#define FW_FEATURE_TERM		ASM_CONST(0x0000000000000080)
 31#define FW_FEATURE_PERF		ASM_CONST(0x0000000000000100)
 32#define FW_FEATURE_DUMP		ASM_CONST(0x0000000000000200)
 33#define FW_FEATURE_INTERRUPT	ASM_CONST(0x0000000000000400)
 34#define FW_FEATURE_MIGRATE	ASM_CONST(0x0000000000000800)
 35#define FW_FEATURE_PERFMON	ASM_CONST(0x0000000000001000)
 36#define FW_FEATURE_CRQ		ASM_CONST(0x0000000000002000)
 37#define FW_FEATURE_VIO		ASM_CONST(0x0000000000004000)
 38#define FW_FEATURE_RDMA		ASM_CONST(0x0000000000008000)
 39#define FW_FEATURE_LLAN		ASM_CONST(0x0000000000010000)
 40#define FW_FEATURE_BULK_REMOVE	ASM_CONST(0x0000000000020000)
 41#define FW_FEATURE_XDABR	ASM_CONST(0x0000000000040000)
 42#define FW_FEATURE_MULTITCE	ASM_CONST(0x0000000000080000)
 43#define FW_FEATURE_SPLPAR	ASM_CONST(0x0000000000100000)
 44#define FW_FEATURE_ISERIES	ASM_CONST(0x0000000000200000)
 45#define FW_FEATURE_LPAR		ASM_CONST(0x0000000000400000)
 46#define FW_FEATURE_PS3_LV1	ASM_CONST(0x0000000000800000)
 47#define FW_FEATURE_BEAT		ASM_CONST(0x0000000001000000)
 48#define FW_FEATURE_CMO		ASM_CONST(0x0000000002000000)
 49#define FW_FEATURE_VPHN		ASM_CONST(0x0000000004000000)
 50#define FW_FEATURE_XCMO		ASM_CONST(0x0000000008000000)
 
 
 
 
 
 51
 52#ifndef __ASSEMBLY__
 53
 54enum {
 55#ifdef CONFIG_PPC64
 56	FW_FEATURE_PSERIES_POSSIBLE = FW_FEATURE_PFT | FW_FEATURE_TCE |
 57		FW_FEATURE_SPRG0 | FW_FEATURE_DABR | FW_FEATURE_COPY |
 58		FW_FEATURE_ASR | FW_FEATURE_DEBUG | FW_FEATURE_TERM |
 59		FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT |
 60		FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ |
 61		FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN |
 62		FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR |
 63		FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
 64		FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO,
 
 
 65	FW_FEATURE_PSERIES_ALWAYS = 0,
 66	FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR,
 67	FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR,
 68	FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
 69	FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
 70	FW_FEATURE_CELLEB_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_BEAT,
 71	FW_FEATURE_CELLEB_ALWAYS = 0,
 72	FW_FEATURE_NATIVE_POSSIBLE = 0,
 73	FW_FEATURE_NATIVE_ALWAYS = 0,
 74	FW_FEATURE_POSSIBLE =
 75#ifdef CONFIG_PPC_PSERIES
 76		FW_FEATURE_PSERIES_POSSIBLE |
 77#endif
 78#ifdef CONFIG_PPC_ISERIES
 79		FW_FEATURE_ISERIES_POSSIBLE |
 80#endif
 81#ifdef CONFIG_PPC_PS3
 82		FW_FEATURE_PS3_POSSIBLE |
 83#endif
 84#ifdef CONFIG_PPC_CELLEB
 85		FW_FEATURE_CELLEB_POSSIBLE |
 86#endif
 87#ifdef CONFIG_PPC_NATIVE
 88		FW_FEATURE_NATIVE_ALWAYS |
 89#endif
 90		0,
 91	FW_FEATURE_ALWAYS =
 92#ifdef CONFIG_PPC_PSERIES
 93		FW_FEATURE_PSERIES_ALWAYS &
 94#endif
 95#ifdef CONFIG_PPC_ISERIES
 96		FW_FEATURE_ISERIES_ALWAYS &
 97#endif
 98#ifdef CONFIG_PPC_PS3
 99		FW_FEATURE_PS3_ALWAYS &
100#endif
101#ifdef CONFIG_PPC_CELLEB
102		FW_FEATURE_CELLEB_ALWAYS &
103#endif
104#ifdef CONFIG_PPC_NATIVE
105		FW_FEATURE_NATIVE_ALWAYS &
106#endif
107		FW_FEATURE_POSSIBLE,
108
109#else /* CONFIG_PPC64 */
110	FW_FEATURE_POSSIBLE = 0,
111	FW_FEATURE_ALWAYS = 0,
112#endif
113};
114
115/* This is used to identify firmware features which are available
116 * to the kernel.
117 */
118extern unsigned long	powerpc_firmware_features;
119
120#define firmware_has_feature(feature)					\
121	((FW_FEATURE_ALWAYS & (feature)) ||				\
122		(FW_FEATURE_POSSIBLE & powerpc_firmware_features & (feature)))
123
124extern void system_reset_fwnmi(void);
125extern void machine_check_fwnmi(void);
126
127/* This is true if we are using the firmware NMI handler (typically LPAR) */
128extern int fwnmi_active;
129
130extern unsigned int __start___fw_ftr_fixup, __stop___fw_ftr_fixup;
131
132#endif /* __ASSEMBLY__ */
133#endif /* __KERNEL__ */
134#endif /* __ASM_POWERPC_FIRMWARE_H */