Change-Id: Ie988b2caeb2cdc07a3d6466b7ae3501df469ef41 Signed-off-by: Iru Cai <mytbk920423@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/40364 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
		
			
				
	
	
		
			127 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| type sandybridgemc struct {
 | |
| }
 | |
| 
 | |
| func (i sandybridgemc) Scan(ctx Context, addr PCIDevData) {
 | |
| 	inteltool := ctx.InfoSource.GetInteltool()
 | |
| 
 | |
| 	/* FIXME:XX Move this somewhere else.  */
 | |
| 	MainboardIncludes = append(MainboardIncludes, "drivers/intel/gma/int15.h")
 | |
| 	MainboardEnable += (`	/* FIXME: fix these values. */
 | |
| 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS,
 | |
| 					GMA_INT15_PANEL_FIT_DEFAULT,
 | |
| 					GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
 | |
| `)
 | |
| 
 | |
| 	DevTree = DevTreeNode{
 | |
| 		Chip:          "northbridge/intel/sandybridge",
 | |
| 		MissingParent: "northbridge",
 | |
| 		Comment:       "FIXME: GPU registers may not always apply.",
 | |
| 		Registers: map[string]string{
 | |
| 			"gpu_dp_b_hotplug":                    FormatInt32((inteltool.IGD[0xc4030] >> 2) & 7),
 | |
| 			"gpu_dp_c_hotplug":                    FormatInt32((inteltool.IGD[0xc4030] >> 10) & 7),
 | |
| 			"gpu_dp_d_hotplug":                    FormatInt32((inteltool.IGD[0xc4030] >> 18) & 7),
 | |
| 			"gpu_panel_port_select":               FormatInt32((inteltool.IGD[0xc7208] >> 30) & 3),
 | |
| 			"gpu_panel_power_up_delay":            FormatInt32((inteltool.IGD[0xc7208] >> 16) & 0x1fff),
 | |
| 			"gpu_panel_power_backlight_on_delay":  FormatInt32(inteltool.IGD[0xc7208] & 0x1fff),
 | |
| 			"gpu_panel_power_down_delay":          FormatInt32((inteltool.IGD[0xc720c] >> 16) & 0x1fff),
 | |
| 			"gpu_panel_power_backlight_off_delay": FormatInt32(inteltool.IGD[0xc720c] & 0x1fff),
 | |
| 			"gpu_panel_power_cycle_delay":         FormatInt32(inteltool.IGD[0xc7210] & 0xff),
 | |
| 			"gpu_cpu_backlight":                   FormatHex32(inteltool.IGD[0x48254]),
 | |
| 			"gpu_pch_backlight":                   FormatHex32((inteltool.IGD[0xc8254] >> 16) * 0x10001),
 | |
| 			"gfx": fmt.Sprintf("GMA_STATIC_DISPLAYS(%d)", (inteltool.IGD[0xc6200] >> 12) & 1),
 | |
| 		},
 | |
| 		Children: []DevTreeNode{
 | |
| 			{
 | |
| 				Chip: "cpu_cluster",
 | |
| 				Dev:  0,
 | |
| 				Children: []DevTreeNode{
 | |
| 					{
 | |
| 						Chip:    "cpu/intel/model_206ax",
 | |
| 						Comment: "FIXME: check all registers",
 | |
| 						Registers: map[string]string{
 | |
| 							/* FIXME:XX hardcoded.  */
 | |
| 							"c1_acpower": "1",
 | |
| 							"c2_acpower": "3",
 | |
| 							"c3_acpower": "5",
 | |
| 							"c1_battery": "1",
 | |
| 							"c2_battery": "3",
 | |
| 							"c3_battery": "5",
 | |
| 						},
 | |
| 						Children: []DevTreeNode{
 | |
| 							{
 | |
| 								Chip: "lapic",
 | |
| 								Dev:  0,
 | |
| 							},
 | |
| 							{
 | |
| 								Chip:     "lapic",
 | |
| 								Dev:      0xacac,
 | |
| 								Disabled: true,
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 
 | |
| 			{
 | |
| 				Chip:          "domain",
 | |
| 				Dev:           0,
 | |
| 				PCIController: true,
 | |
| 				ChildPCIBus:   0,
 | |
| 				PCISlots: []PCISlot{
 | |
| 					PCISlot{PCIAddr: PCIAddr{Dev: 0x0, Func: 0}, writeEmpty: true, additionalComment: "Host bridge"},
 | |
| 					PCISlot{PCIAddr: PCIAddr{Dev: 0x1, Func: 0}, writeEmpty: true, additionalComment: "PEG"},
 | |
| 					PCISlot{PCIAddr: PCIAddr{Dev: 0x2, Func: 0}, writeEmpty: true, additionalComment: "iGPU"},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	PutPCIDev(addr, "Host bridge")
 | |
| 
 | |
| 	/* FIXME:XX some configs are unsupported.  */
 | |
| 	KconfigBool["NORTHBRIDGE_INTEL_SANDYBRIDGE"] = true
 | |
| 	KconfigBool["USE_NATIVE_RAMINIT"] = true
 | |
| 	KconfigBool["INTEL_INT15"] = true
 | |
| 	KconfigBool["HAVE_ACPI_TABLES"] = true
 | |
| 	KconfigBool["HAVE_ACPI_RESUME"] = true
 | |
| 
 | |
| 	KconfigInt["MAX_CPUS"] = 8
 | |
| 
 | |
| 	DSDTIncludes = append(DSDTIncludes, DSDTInclude{
 | |
| 		File: "cpu/intel/common/acpi/cpu.asl",
 | |
| 	})
 | |
| 
 | |
| 	DSDTPCI0Includes = append(DSDTPCI0Includes, DSDTInclude{
 | |
| 		File: "northbridge/intel/sandybridge/acpi/sandybridge.asl",
 | |
| 	}, DSDTInclude{
 | |
| 		File: "drivers/intel/gma/acpi/default_brightness_levels.asl",
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	RegisterPCI(0x8086, 0x0100, sandybridgemc{})
 | |
| 	RegisterPCI(0x8086, 0x0104, sandybridgemc{})
 | |
| 	RegisterPCI(0x8086, 0x0150, sandybridgemc{})
 | |
| 	RegisterPCI(0x8086, 0x0154, sandybridgemc{})
 | |
| 	RegisterPCI(0x8086, 0x0158, sandybridgemc{})
 | |
| 	for _, id := range []uint16{
 | |
| 		0x0102, 0x0106, 0x010a,
 | |
| 		0x0112, 0x0116, 0x0122, 0x0126,
 | |
| 		0x0152, 0x0156, 0x0162, 0x0166,
 | |
| 	} {
 | |
| 		RegisterPCI(0x8086, id, GenericVGA{GenericPCI{}})
 | |
| 	}
 | |
| 
 | |
| 	/* PCIe bridge */
 | |
| 	for _, id := range []uint16{
 | |
| 		0x0101, 0x0105, 0x0109, 0x010d,
 | |
| 		0x0151, 0x0155, 0x0159, 0x015d,
 | |
| 	} {
 | |
| 		RegisterPCI(0x8086, id, GenericPCI{})
 | |
| 	}
 | |
| }
 |