Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/drivers/spi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 kB image not shown  

Quelle  spi-amd-pci.c   Sprache: C

 
// 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
C=97 H=95 G=95

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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.