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

📄 pmac_feature.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 5 页
字号:
/* Heathrow desktop machines (Beige G3). * Separated as some features couldn't be properly tested * and the serial port control bits appear to confuse it. */static struct feature_table_entry heathrow_desktop_features[] = {	{ PMAC_FTR_SWIM3_ENABLE,	heathrow_floppy_enable },	{ PMAC_FTR_MESH_ENABLE,		heathrow_mesh_enable },	{ PMAC_FTR_IDE_ENABLE,		heathrow_ide_enable },	{ PMAC_FTR_IDE_RESET,		heathrow_ide_reset },	{ PMAC_FTR_BMAC_ENABLE,		heathrow_bmac_enable },	{ 0, NULL }};/* Heathrow based laptop, that is the Wallstreet and mainstreet * powerbooks. */static struct feature_table_entry heathrow_laptop_features[] = {	{ PMAC_FTR_SCC_ENABLE,		ohare_htw_scc_enable },	{ PMAC_FTR_MODEM_ENABLE,	heathrow_modem_enable },	{ PMAC_FTR_SWIM3_ENABLE,	heathrow_floppy_enable },	{ PMAC_FTR_MESH_ENABLE,		heathrow_mesh_enable },	{ PMAC_FTR_IDE_ENABLE,		heathrow_ide_enable },	{ PMAC_FTR_IDE_RESET,		heathrow_ide_reset },	{ PMAC_FTR_BMAC_ENABLE,		heathrow_bmac_enable },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	heathrow_sound_enable },	{ PMAC_FTR_SLEEP_STATE,		heathrow_sleep_state },	{ 0, NULL }};/* Paddington based machines * The lombard (101) powerbook, first iMac models, B&W G3 and Yikes G4. */static struct feature_table_entry paddington_features[] = {	{ PMAC_FTR_SCC_ENABLE,		ohare_htw_scc_enable },	{ PMAC_FTR_MODEM_ENABLE,	heathrow_modem_enable },	{ PMAC_FTR_SWIM3_ENABLE,	heathrow_floppy_enable },	{ PMAC_FTR_MESH_ENABLE,		heathrow_mesh_enable },	{ PMAC_FTR_IDE_ENABLE,		heathrow_ide_enable },	{ PMAC_FTR_IDE_RESET,		heathrow_ide_reset },	{ PMAC_FTR_BMAC_ENABLE,		heathrow_bmac_enable },	{ PMAC_FTR_SOUND_CHIP_ENABLE,	heathrow_sound_enable },	{ PMAC_FTR_SLEEP_STATE,		heathrow_sleep_state },	{ 0, NULL }};/* Core99 & MacRISC 2 machines (all machines released since the * iBook (included), that is all AGP machines, except pangea * chipset. The pangea chipset is the "combo" UniNorth/KeyLargo * used on iBook2 & iMac "flow power". */static struct feature_table_entry core99_features[] = {	{ 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 },	{ 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 }};/* 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 },#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 | PMAC_MB_HAS_FW_POWER,	},	{	"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_HAS_FW_POWER | PMAC_MB_MOBILE,	},	{	"PowerBook5,9",			"PowerBook G4 17\"",		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | 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,	},#endif /* CONFIG_POWER4 */};/* * The toplevel feature_call callback */longpmac_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 __initprobe_motherboard(void){	int i;	struct macio_chip* macio = &macio_chips[0];	const char* model = NULL;	struct device_node *dt;	/* 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 = find_devices("device-tree");	if (dt != NULL)		model = (const char *) 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 

⌨️ 快捷键说明

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