MCPcopy Create free account
hub / github.com/coreboot/coreboot / print_lpc

Function print_lpc

util/amdtool/lpc.c:68–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66};
67
68int print_lpc(struct pci_dev *sb)
69{
70 size_t i, cfg_registers_size = 0;
71 const io_register_t *cfg_registers;
72 int smbus_rev = 0;
73
74 printf("\n========== LPC =========\n\n");
75
76 switch (sb->device_id) {
77 case PCI_DEVICE_ID_AMD_FCH_LPC_2:
78 smbus_rev = find_smbus_dev_rev(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FCH_SMB_2);
79 if (smbus_rev == -1)
80 return 1;
81
82 switch (smbus_rev) {
83 case 0x71:
84 cfg_registers = lpc_cfg_registers;
85 cfg_registers_size = ARRAY_SIZE(lpc_cfg_registers);
86 break;
87 default:
88 printf("Error: Dumping LPC on this southbridge is not (yet) supported.\n");
89 return 1;
90 }
91
92 break;
93 default:
94 printf("Error: Dumping LPC on this southbridge is not (yet) supported.\n");
95 return 1;
96 }
97
98 for (i = 0; i < cfg_registers_size; i++) {
99 switch (cfg_registers[i].size) {
100 case 4:
101 printf("0x%04x: 0x%08x (%s)\n",
102 cfg_registers[i].addr,
103 pci_read_long(sb, cfg_registers[i].addr),
104 cfg_registers[i].name);
105 break;
106 case 2:
107 printf("0x%04x: 0x%04x (%s)\n",
108 cfg_registers[i].addr,
109 pci_read_word(sb, cfg_registers[i].addr),
110 cfg_registers[i].name);
111 break;
112 case 1:
113 printf("0x%04x: 0x%02x (%s)\n",
114 cfg_registers[i].addr,
115 pci_read_byte(sb, cfg_registers[i].addr),
116 cfg_registers[i].name);
117 break;
118 default:
119 printf("Error: register size %d not implemented.\n",
120 cfg_registers[i].size);
121 break;
122 }
123 }
124
125 return 0;

Callers 1

amdtool.cFile · 0.70

Calls 5

printfFunction · 0.85
find_smbus_dev_revFunction · 0.85
pci_read_longFunction · 0.85
pci_read_wordFunction · 0.85
pci_read_byteFunction · 0.85

Tested by

no test coverage detected