Lines Matching +full:motherboard +full:- +full:bus
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
6 * Copyright (c) 2017-2018 Panasas
39 #include <sys/bus.h>
41 #include <machine/bus.h>
52 /* (Sandy,Ivy)bridge-Xeon and (Has,Broad)well-Xeon CPUs contain one or two
57 * full-fledged SMBus controllers, like the one in Intel ICHs and PCHs.
60 * found in the CPU datasheets for (Sandy,Ivy)bridge-Xeon and
61 * (Has,broad)well-Xeon, respectively:
64 * Sandybridge xeon-e5-1600-2600-vol-2-datasheet.pdf
65 * Ivybridge xeon-e5-v2-datasheet-vol-2.pdf
66 * Haswell xeon-e5-v3-datasheet-vol-2.pdf
67 * Broadwell xeon-e5-v4-datasheet-vol-2.pdf
71 * https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg840043.html
81 * - "imcsmb" is an smbus(4)-compliant SMBus controller driver
83 * - "imcsmb_pci" recognizes the PCI device and assigns the appropriate set of
87 /* Depending on the motherboard and firmware, the TSODs might be polled by
89 * firmware polling must be disabled as part of requesting the bus, and
90 * re-enabled when releasing the bus. Unfortunately, the details of how to do
91 * this are vendor-specific. Contact your motherboard vendor to get the
95 * manages the NVDIMM; for those which pre-date the standard, the operating
96 * system interacts with the NVDIMM controller using a vendor-proprietary API
102 /* PCIe device IDs for (Sandy,Ivy)bridge)-Xeon and (Has,Broad)well-Xeon */
108 /* (Sandy,Ivy)bridge-Xeon only have a single memory controller per socket */
171 sc->dev = dev; in imcsmb_pci_attach()
172 sc->semaphore = 0; in imcsmb_pci_attach()
220 pci_device->name != NULL; in imcsmb_pci_probe()
222 if (pci_dev_id == pci_device->id) { in imcsmb_pci_probe()
223 device_set_desc(dev, pci_device->name); in imcsmb_pci_probe()
234 * Invoked via smbus_callback() -> imcsmb_callback(); clear the semaphore, and
235 * re-enable motherboard-specific DIMM temperature monitoring if needed. This
251 * IF NEEDED, INSERT MOTHERBOARD-SPECIFIC CODE TO RE-ENABLE DIMM in imcsmb_pci_release_bus()
255 atomic_store_rel_int(&sc->semaphore, 0); in imcsmb_pci_release_bus()
259 * Invoked via smbus_callback() -> imcsmb_callback(); set the semaphore, and
260 * disable motherboard-specific DIMM temperature monitoring if needed. This gets
277 /* We don't want to block. Use a simple test-and-set semaphore to in imcsmb_pci_request_bus()
278 * protect the bus. in imcsmb_pci_request_bus()
280 if (atomic_cmpset_acq_int(&sc->semaphore, 0, 1) == 0) { in imcsmb_pci_request_bus()
285 * IF NEEDED, INSERT MOTHERBOARD-SPECIFIC CODE TO DISABLE DIMM in imcsmb_pci_request_bus()