⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feature.c

📁 linux内核源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	{ PMAC_FTR_SCC_ENABLE,		core99_scc_enable },	{ PMAC_FTR_MODEM_ENABLE,	core99_modem_enable },	{ PMAC_FTR_IDE_ENABLE,		core99_ide_enable },	{ PMAC_FTR_IDE_RESET,		core99_ide_reset },	{ PMAC_FTR_GMAC_ENABLE,		core99_gmac_enable },	{ PMAC_FTR_GMAC_PHY_RESET,	core99_gmac_phy_reset },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	core99_sound_chip_enable },	{ PMAC_FTR_AIRPORT_ENABLE,	core99_airport_enable },	{ PMAC_FTR_USB_ENABLE,		core99_usb_enable },	{ PMAC_FTR_1394_ENABLE,		core99_firewire_enable },	{ PMAC_FTR_1394_CABLE_POWER,	core99_firewire_cable_power },#ifdef CONFIG_PM	{ PMAC_FTR_SLEEP_STATE,		core99_sleep_state },#endif#ifdef CONFIG_SMP	{ PMAC_FTR_RESET_CPU,		core99_reset_cpu },#endif /* CONFIG_SMP */	{ PMAC_FTR_READ_GPIO,		core99_read_gpio },	{ PMAC_FTR_WRITE_GPIO,		core99_write_gpio },	{ 0, NULL }};/* RackMac */static struct feature_table_entry rackmac_features[] = {	{ PMAC_FTR_SCC_ENABLE,		core99_scc_enable },	{ PMAC_FTR_IDE_ENABLE,		core99_ide_enable },	{ PMAC_FTR_IDE_RESET,		core99_ide_reset },	{ PMAC_FTR_GMAC_ENABLE,		core99_gmac_enable },	{ PMAC_FTR_GMAC_PHY_RESET,	core99_gmac_phy_reset },	{ PMAC_FTR_USB_ENABLE,		core99_usb_enable },	{ PMAC_FTR_1394_ENABLE,		core99_firewire_enable },	{ PMAC_FTR_1394_CABLE_POWER,	core99_firewire_cable_power },	{ PMAC_FTR_SLEEP_STATE,		core99_sleep_state },#ifdef CONFIG_SMP	{ PMAC_FTR_RESET_CPU,		core99_reset_cpu },#endif /* CONFIG_SMP */	{ PMAC_FTR_READ_GPIO,		core99_read_gpio },	{ PMAC_FTR_WRITE_GPIO,		core99_write_gpio },	{ 0, NULL }};/* Pangea features */static struct feature_table_entry pangea_features[] = {	{ PMAC_FTR_SCC_ENABLE,		core99_scc_enable },	{ PMAC_FTR_MODEM_ENABLE,	pangea_modem_enable },	{ PMAC_FTR_IDE_ENABLE,		core99_ide_enable },	{ PMAC_FTR_IDE_RESET,		core99_ide_reset },	{ PMAC_FTR_GMAC_ENABLE,		core99_gmac_enable },	{ PMAC_FTR_GMAC_PHY_RESET,	core99_gmac_phy_reset },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	core99_sound_chip_enable },	{ PMAC_FTR_AIRPORT_ENABLE,	core99_airport_enable },	{ PMAC_FTR_USB_ENABLE,		core99_usb_enable },	{ PMAC_FTR_1394_ENABLE,		core99_firewire_enable },	{ PMAC_FTR_1394_CABLE_POWER,	core99_firewire_cable_power },	{ PMAC_FTR_SLEEP_STATE,		core99_sleep_state },	{ PMAC_FTR_READ_GPIO,		core99_read_gpio },	{ PMAC_FTR_WRITE_GPIO,		core99_write_gpio },	{ 0, NULL }};/* Intrepid features */static struct feature_table_entry intrepid_features[] = {	{ PMAC_FTR_SCC_ENABLE,		core99_scc_enable },	{ PMAC_FTR_MODEM_ENABLE,	pangea_modem_enable },	{ PMAC_FTR_IDE_ENABLE,		core99_ide_enable },	{ PMAC_FTR_IDE_RESET,		core99_ide_reset },	{ PMAC_FTR_GMAC_ENABLE,		core99_gmac_enable },	{ PMAC_FTR_GMAC_PHY_RESET,	core99_gmac_phy_reset },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	core99_sound_chip_enable },	{ PMAC_FTR_AIRPORT_ENABLE,	core99_airport_enable },	{ PMAC_FTR_USB_ENABLE,		core99_usb_enable },	{ PMAC_FTR_1394_ENABLE,		core99_firewire_enable },	{ PMAC_FTR_1394_CABLE_POWER,	core99_firewire_cable_power },	{ PMAC_FTR_SLEEP_STATE,		core99_sleep_state },	{ PMAC_FTR_READ_GPIO,		core99_read_gpio },	{ PMAC_FTR_WRITE_GPIO,		core99_write_gpio },	{ PMAC_FTR_AACK_DELAY_ENABLE,	intrepid_aack_delay_enable },	{ 0, NULL }};#else /* CONFIG_POWER4 *//* G5 features */static struct feature_table_entry g5_features[] = {	{ PMAC_FTR_GMAC_ENABLE,		g5_gmac_enable },	{ PMAC_FTR_1394_ENABLE,		g5_fw_enable },	{ PMAC_FTR_ENABLE_MPIC,		g5_mpic_enable },	{ PMAC_FTR_GMAC_PHY_RESET,	g5_eth_phy_reset },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	g5_i2s_enable },#ifdef CONFIG_SMP	{ PMAC_FTR_RESET_CPU,		g5_reset_cpu },#endif /* CONFIG_SMP */	{ PMAC_FTR_READ_GPIO,		core99_read_gpio },	{ PMAC_FTR_WRITE_GPIO,		core99_write_gpio },	{ 0, NULL }};#endif /* CONFIG_POWER4 */static struct pmac_mb_def pmac_mb_defs[] = {#ifndef CONFIG_POWER4	/*	 * Desktops	 */	{	"AAPL,8500",			"PowerMac 8500/8600",		PMAC_TYPE_PSURGE,		NULL,		0	},	{	"AAPL,9500",			"PowerMac 9500/9600",		PMAC_TYPE_PSURGE,		NULL,		0	},	{	"AAPL,7200",			"PowerMac 7200",		PMAC_TYPE_PSURGE,		NULL,		0	},	{	"AAPL,7300",			"PowerMac 7200/7300",		PMAC_TYPE_PSURGE,		NULL,		0	},	{	"AAPL,7500",			"PowerMac 7500",		PMAC_TYPE_PSURGE,		NULL,		0	},	{	"AAPL,ShinerESB",		"Apple Network Server",		PMAC_TYPE_ANS,			NULL,		0	},	{	"AAPL,e407",			"Alchemy",		PMAC_TYPE_ALCHEMY,		NULL,		0	},	{	"AAPL,e411",			"Gazelle",		PMAC_TYPE_GAZELLE,		NULL,		0	},	{	"AAPL,Gossamer",		"PowerMac G3 (Gossamer)",		PMAC_TYPE_GOSSAMER,		heathrow_desktop_features,		0	},	{	"AAPL,PowerMac G3",		"PowerMac G3 (Silk)",		PMAC_TYPE_SILK,			heathrow_desktop_features,		0	},	{	"PowerMac1,1",			"Blue&White G3",		PMAC_TYPE_YOSEMITE,		paddington_features,		0	},	{	"PowerMac1,2",			"PowerMac G4 PCI Graphics",		PMAC_TYPE_YIKES,		paddington_features,		0	},	{	"PowerMac2,1",			"iMac FireWire",		PMAC_TYPE_FW_IMAC,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_OLD_CORE99	},	{	"PowerMac2,2",			"iMac FireWire",		PMAC_TYPE_FW_IMAC,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_OLD_CORE99	},	{	"PowerMac3,1",			"PowerMac G4 AGP Graphics",		PMAC_TYPE_SAWTOOTH,		core99_features,		PMAC_MB_OLD_CORE99	},	{	"PowerMac3,2",			"PowerMac G4 AGP Graphics",		PMAC_TYPE_SAWTOOTH,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_OLD_CORE99	},	{	"PowerMac3,3",			"PowerMac G4 AGP Graphics",		PMAC_TYPE_SAWTOOTH,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_OLD_CORE99	},	{	"PowerMac3,4",			"PowerMac G4 Silver",		PMAC_TYPE_QUICKSILVER,		core99_features,		PMAC_MB_MAY_SLEEP	},	{	"PowerMac3,5",			"PowerMac G4 Silver",		PMAC_TYPE_QUICKSILVER,		core99_features,		PMAC_MB_MAY_SLEEP	},	{	"PowerMac3,6",			"PowerMac G4 Windtunnel",		PMAC_TYPE_WINDTUNNEL,		core99_features,		PMAC_MB_MAY_SLEEP,	},	{	"PowerMac4,1",			"iMac \"Flower Power\"",		PMAC_TYPE_PANGEA_IMAC,		pangea_features,		PMAC_MB_MAY_SLEEP	},	{	"PowerMac4,2",			"Flat panel iMac",		PMAC_TYPE_FLAT_PANEL_IMAC,	pangea_features,		PMAC_MB_CAN_SLEEP	},	{	"PowerMac4,4",			"eMac",		PMAC_TYPE_EMAC,			core99_features,		PMAC_MB_MAY_SLEEP	},	{	"PowerMac5,1",			"PowerMac G4 Cube",		PMAC_TYPE_CUBE,			core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_OLD_CORE99	},	{	"PowerMac6,1",			"Flat panel iMac",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP,	},	{	"PowerMac6,3",			"Flat panel iMac",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP,	},	{	"PowerMac6,4",			"eMac",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP,	},	{	"PowerMac10,1",			"Mac mini",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP,	},	{	"iMac,1",			"iMac (first generation)",		PMAC_TYPE_ORIG_IMAC,		paddington_features,		0	},	/*	 * Xserve's	 */	{	"RackMac1,1",			"XServe",		PMAC_TYPE_RACKMAC,		rackmac_features,		0,	},	{	"RackMac1,2",			"XServe rev. 2",		PMAC_TYPE_RACKMAC,		rackmac_features,		0,	},	/*	 * Laptops	 */	{	"AAPL,3400/2400",		"PowerBook 3400",		PMAC_TYPE_HOOPER,		ohare_features,		PMAC_MB_CAN_SLEEP | PMAC_MB_MOBILE	},	{	"AAPL,3500",			"PowerBook 3500",		PMAC_TYPE_KANGA,		ohare_features,		PMAC_MB_CAN_SLEEP | PMAC_MB_MOBILE	},	{	"AAPL,PowerBook1998",		"PowerBook Wallstreet",		PMAC_TYPE_WALLSTREET,		heathrow_laptop_features,		PMAC_MB_CAN_SLEEP | PMAC_MB_MOBILE	},	{	"PowerBook1,1",			"PowerBook 101 (Lombard)",		PMAC_TYPE_101_PBOOK,		paddington_features,		PMAC_MB_CAN_SLEEP | PMAC_MB_MOBILE	},	{	"PowerBook2,1",			"iBook (first generation)",		PMAC_TYPE_ORIG_IBOOK,		core99_features,		PMAC_MB_CAN_SLEEP | PMAC_MB_OLD_CORE99 | PMAC_MB_MOBILE	},	{	"PowerBook2,2",			"iBook FireWire",		PMAC_TYPE_FW_IBOOK,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER |		PMAC_MB_OLD_CORE99 | PMAC_MB_MOBILE	},	{	"PowerBook3,1",			"PowerBook Pismo",		PMAC_TYPE_PISMO,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER |		PMAC_MB_OLD_CORE99 | PMAC_MB_MOBILE	},	{	"PowerBook3,2",			"PowerBook Titanium",		PMAC_TYPE_TITANIUM,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook3,3",			"PowerBook Titanium II",		PMAC_TYPE_TITANIUM2,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook3,4",			"PowerBook Titanium III",		PMAC_TYPE_TITANIUM3,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook3,5",			"PowerBook Titanium IV",		PMAC_TYPE_TITANIUM4,		core99_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook4,1",			"iBook 2",		PMAC_TYPE_IBOOK2,		pangea_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook4,2",			"iBook 2",		PMAC_TYPE_IBOOK2,		pangea_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook4,3",			"iBook 2 rev. 2",		PMAC_TYPE_IBOOK2,		pangea_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE	},	{	"PowerBook5,1",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,2",			"PowerBook G4 15\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,3",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,4",			"PowerBook G4 15\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,5",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,6",			"PowerBook G4 15\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,7",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,8",			"PowerBook G4 15\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP  | PMAC_MB_MOBILE,	},	{	"PowerBook5,9",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_MOBILE,	},	{	"PowerBook6,1",			"PowerBook G4 12\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,2",			"PowerBook G4",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,3",			"iBook G4",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,4",			"PowerBook G4 12\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,5",			"iBook G4",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,7",			"iBook G4",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook6,8",			"PowerBook G4 12\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,	},#else /* CONFIG_POWER4 */	{	"PowerMac7,2",			"PowerMac G5",		PMAC_TYPE_POWERMAC_G5,		g5_features,		0,	},#ifdef CONFIG_PPC64	{	"PowerMac7,3",			"PowerMac G5",		PMAC_TYPE_POWERMAC_G5,		g5_features,		0,	},	{	"PowerMac8,1",			"iMac G5",		PMAC_TYPE_IMAC_G5,		g5_features,		0,	},	{	"PowerMac9,1",			"PowerMac G5",		PMAC_TYPE_POWERMAC_G5_U3L,	g5_features,		0,	},	{	"PowerMac11,2",			"PowerMac G5 Dual Core",		PMAC_TYPE_POWERMAC_G5_U3L,	g5_features,		0,	},	{	"PowerMac12,1",			"iMac G5 (iSight)",		PMAC_TYPE_POWERMAC_G5_U3L,	g5_features,		0,	},	{       "RackMac3,1",                   "XServe G5",		PMAC_TYPE_XSERVE_G5,		g5_features,		0,	},#endif /* CONFIG_PPC64 */#endif /* CONFIG_POWER4 */};/* * The toplevel feature_call callback */long pmac_do_feature_call(unsigned int selector, ...){	struct device_node *node;	long param, value;	int i;	feature_call func = NULL;	va_list args;	if (pmac_mb.features)		for (i=0; pmac_mb.features[i].function; i++)			if (pmac_mb.features[i].selector == selector) {				func = pmac_mb.features[i].function;				break;			}	if (!func)		for (i=0; any_features[i].function; i++)			if (any_features[i].selector == selector) {				func = any_features[i].function;				break;			}	if (!func)		return -ENODEV;	va_start(args, selector);	node = (struct device_node*)va_arg(args, void*);	param = va_arg(args, long);	value = va_arg(args, long);	va_end(args);	return func(node, param, value);}static int __init probe_motherboard(void){	int i;	struct macio_chip *macio = &macio_chips[0];	const char *model = NULL;	struct device_node *dt;	int ret = 0;	/* Lookup known motherboard type in device-tree. First try an	 * exact match on the "model" property, then try a "compatible"	 * match is none is found.	 */	dt = of_find_node_by_name(NULL, "device-tree");	if (dt != NULL)		model = of_get_property(dt, "model", NULL);	for(i=0; model && i<(sizeof(pmac_mb_defs)/sizeof(struct pmac_mb_def)); i++) {	    if (strcmp(model, pmac_mb_defs[i].model_string) == 0) {		pmac_mb = pmac_mb_defs[i];		goto found;	    }	}	for(i=0; i<(sizeof(pmac_mb_defs)/sizeof(struct pmac_mb_def)); i++) {	    if (machine_is_compatible(pmac_mb_defs[i].model_string)) {		pmac_mb = pmac_mb_defs[i];		goto found;	    }	}	/* Fallback to selection depending on mac-io chip type */	switch(macio->type) {#ifndef CONFIG_POWER4	    case macio_grand_central:		pmac_mb.model_id = PMAC_TYPE_PSURGE;		pmac_mb.model_name = "Unknown PowerSurge";		break;	    case macio_ohare:		pmac_mb.model_id = PMAC_TYPE_UNKNOWN_OHARE;		pmac_mb.model_name = "Unknown OHare-based";		break;	    case macio_heathrow:		pmac_mb.model_id = PMAC_TYPE_UNKNOWN_HEATHROW;		pmac_mb.model_name = "Unknown Heathrow-based";		pmac_mb.features = heathrow_desktop_features;		break;	    case macio_paddington:		pmac_mb.model_id = PMAC_TYPE_UNKNOWN_PADDINGTON;		pmac_mb.model_name = "Unknown Paddington-based";		pmac_mb.features = paddington_features;		break;	    case macio_keylargo:		pmac_mb.model_id = PMAC_TYPE_UNKNOWN_CORE99;		pmac_mb.model_name = "Unknown Keylargo-based";		pmac_mb.features = core99_features;		break;	    case macio_pangea:		pmac_mb.model_id = PMAC_TYPE_UNKNOWN_PANGEA;		pmac_mb.model_name = "Unknown Pangea-based";		pmac_mb.features = pa

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -