Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/icon-themes/elementary/cmd/   (LibreOffice Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 504 B image not shown  

Bilddatei spi-amd-pci.c

  Interaktion und
PortierbarkeitC
 

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * AMD SPI controller driver
 *
 * Copyright (c) 2025, Advanced Micro Devices, Inc.
 * All Rights Reserved.
 *
 * Authors: Krishnamoorthi M <krishnamoorthi.m@amd.com>
 *          Akshata MukundShetty <akshata.mukundshetty@amd.com>
 */


#include <linux/init.h>
#include <linux/spi/spi.h>
#include <linux/pci.h>

#include "spi-amd.h"

#define AMD_PCI_DEVICE_ID_LPC_BRIDGE  0x1682
#define AMD_PCI_LPC_SPI_BASE_ADDR_REG  0xA0
#define AMD_SPI_BASE_ADDR_MASK   ~0xFF
#define AMD_HID2_PCI_BAR_OFFSET   0x00002000
#define AMD_HID2_MEM_SIZE   0x200

static struct pci_device_id pci_spi_ids[] = {
 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_PCI_DEVICE_ID_LPC_BRIDGE) },
 { 0, }
};
MODULE_DEVICE_TABLE(pci, pci_spi_ids);

static int amd_spi_pci_probe(struct pci_dev *pdev,
        const struct pci_device_id *id)
{
 struct device *dev = &pdev->dev;
 struct spi_controller *host;
 struct amd_spi *amd_spi;
 u32 io_base_addr;

 /* Allocate storage for host and driver private data */
 host = devm_spi_alloc_host(dev, sizeof(struct amd_spi));
 if (!host)
  return dev_err_probe(dev, -ENOMEM, "Error allocating SPI host\n");

 amd_spi = spi_controller_get_devdata(host);

 pci_read_config_dword(pdev, AMD_PCI_LPC_SPI_BASE_ADDR_REG, &io_base_addr);
 io_base_addr = (io_base_addr & AMD_SPI_BASE_ADDR_MASK) + AMD_HID2_PCI_BAR_OFFSET;
 amd_spi->io_remap_addr = devm_ioremap(dev, io_base_addr, AMD_HID2_MEM_SIZE);

 if (!amd_spi->io_remap_addr)
  return dev_err_probe(dev, -ENOMEM,
    "ioremap of SPI registers failed\n");

 dev_dbg(dev, "io_remap_address: %p\n", amd_spi->io_remap_addr);

 amd_spi->version = AMD_HID2_SPI;
 host->bus_num = 2;

 return amd_spi_probe_common(dev, host);
}

static struct pci_driver amd_spi_pci_driver = {
 .name = "amd_spi_pci",
 .id_table = pci_spi_ids,
 .probe = amd_spi_pci_probe,
};

module_pci_driver(amd_spi_pci_driver);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("AMD HID2 SPI Controller Driver");

Messung V0.5 in Prozent
C=96 H=96 G=95

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.9Angebot  (Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-07) ¤

*Eine klare Vorstellung vom Zielzustand






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.