Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  pinctrl-denverton.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Denverton SoC pinctrl/GPIO driver
 *
 * Copyright (C) 2017, Intel Corporation
 * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
 */


#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm.h>

#include <linux/pinctrl/pinctrl.h>

#include "pinctrl-intel.h"

#define DNV_PAD_OWN 0x020
#define DNV_PADCFGLOCK 0x090
#define DNV_HOSTSW_OWN 0x0C0
#define DNV_GPI_IS 0x100
#define DNV_GPI_IE 0x120

#define DNV_GPP(n, s, e)    \
 {      \
  .reg_num = (n),    \
  .base = (s),    \
  .size = ((e) - (s) + 1),  \
 }

#define DNV_COMMUNITY(b, s, e, g)   \
 INTEL_COMMUNITY_GPPS(b, s, e, g, DNV)

/* Denverton */
static const struct pinctrl_pin_desc dnv_pins[] = {
 /* North ALL */
 PINCTRL_PIN(0"GBE0_SDP0"),
 PINCTRL_PIN(1"GBE1_SDP0"),
 PINCTRL_PIN(2"GBE0_SDP1"),
 PINCTRL_PIN(3"GBE1_SDP1"),
 PINCTRL_PIN(4"GBE0_SDP2"),
 PINCTRL_PIN(5"GBE1_SDP2"),
 PINCTRL_PIN(6"GBE0_SDP3"),
 PINCTRL_PIN(7"GBE1_SDP3"),
 PINCTRL_PIN(8"GBE2_LED0"),
 PINCTRL_PIN(9"GBE2_LED1"),
 PINCTRL_PIN(10"GBE0_I2C_CLK"),
 PINCTRL_PIN(11"GBE0_I2C_DATA"),
 PINCTRL_PIN(12"GBE1_I2C_CLK"),
 PINCTRL_PIN(13"GBE1_I2C_DATA"),
 PINCTRL_PIN(14"NCSI_RXD0"),
 PINCTRL_PIN(15"NCSI_CLK_IN"),
 PINCTRL_PIN(16"NCSI_RXD1"),
 PINCTRL_PIN(17"NCSI_CRS_DV"),
 PINCTRL_PIN(18"IDSLDO_VID_TICKLE"),
 PINCTRL_PIN(19"NCSI_TX_EN"),
 PINCTRL_PIN(20"NCSI_TXD0"),
 PINCTRL_PIN(21"NCSI_TXD1"),
 PINCTRL_PIN(22"NCSI_ARB_OUT"),
 PINCTRL_PIN(23"GBE0_LED0"),
 PINCTRL_PIN(24"GBE0_LED1"),
 PINCTRL_PIN(25"GBE1_LED0"),
 PINCTRL_PIN(26"GBE1_LED1"),
 PINCTRL_PIN(27"SPARE_0"),
 PINCTRL_PIN(28"PCIE_CLKREQ0_N"),
 PINCTRL_PIN(29"PCIE_CLKREQ1_N"),
 PINCTRL_PIN(30"PCIE_CLKREQ2_N"),
 PINCTRL_PIN(31"PCIE_CLKREQ3_N"),
 PINCTRL_PIN(32"PCIE_CLKREQ4_N"),
 PINCTRL_PIN(33"GBE_MDC"),
 PINCTRL_PIN(34"GBE_MDIO"),
 PINCTRL_PIN(35"SVID_ALERT_N"),
 PINCTRL_PIN(36"SVID_DATA"),
 PINCTRL_PIN(37"SVID_CLK"),
 PINCTRL_PIN(38"THERMTRIP_N"),
 PINCTRL_PIN(39"PROCHOT_N"),
 PINCTRL_PIN(40"MEMHOT_N"),
 /* South DFX */
 PINCTRL_PIN(41"DFX_PORT_CLK0"),
 PINCTRL_PIN(42"DFX_PORT_CLK1"),
 PINCTRL_PIN(43"DFX_PORT0"),
 PINCTRL_PIN(44"DFX_PORT1"),
 PINCTRL_PIN(45"DFX_PORT2"),
 PINCTRL_PIN(46"DFX_PORT3"),
 PINCTRL_PIN(47"DFX_PORT4"),
 PINCTRL_PIN(48"DFX_PORT5"),
 PINCTRL_PIN(49"DFX_PORT6"),
 PINCTRL_PIN(50"DFX_PORT7"),
 PINCTRL_PIN(51"DFX_PORT8"),
 PINCTRL_PIN(52"DFX_PORT9"),
 PINCTRL_PIN(53"DFX_PORT10"),
 PINCTRL_PIN(54"DFX_PORT11"),
 PINCTRL_PIN(55"DFX_PORT12"),
 PINCTRL_PIN(56"DFX_PORT13"),
 PINCTRL_PIN(57"DFX_PORT14"),
 PINCTRL_PIN(58"DFX_PORT15"),
 /* South GPP0 */
 PINCTRL_PIN(59"SPI_TPM_CS_N"),
 PINCTRL_PIN(60"UART2_CTS"),
 PINCTRL_PIN(61"PCIE_CLKREQ5_N"),
 PINCTRL_PIN(62"PCIE_CLKREQ6_N"),
 PINCTRL_PIN(63"PCIE_CLKREQ7_N"),
 PINCTRL_PIN(64"UART0_RXD"),
 PINCTRL_PIN(65"UART0_TXD"),
 PINCTRL_PIN(66"CPU_RESET_N"),
 PINCTRL_PIN(67"NMI"),
 PINCTRL_PIN(68"ERROR2_N"),
 PINCTRL_PIN(69"ERROR1_N"),
 PINCTRL_PIN(70"ERROR0_N"),
 PINCTRL_PIN(71"IERR_N"),
 PINCTRL_PIN(72"MCERR_N"),
 PINCTRL_PIN(73"SMB0_LEG_CLK"),
 PINCTRL_PIN(74"SMB0_LEG_DATA"),
 PINCTRL_PIN(75"SMB0_LEG_ALRT_N"),
 PINCTRL_PIN(76"SMB1_HOST_DATA"),
 PINCTRL_PIN(77"SMB1_HOST_CLK"),
 PINCTRL_PIN(78"SMB2_PECI_DATA"),
 PINCTRL_PIN(79"SMB2_PECI_CLK"),
 PINCTRL_PIN(80"SMB4_CSME0_DATA"),
 PINCTRL_PIN(81"SMB4_CSME0_CLK"),
 PINCTRL_PIN(82"SMB4_CSME0_ALRT_N"),
 PINCTRL_PIN(83"USB_OC0_N"),
 PINCTRL_PIN(84"FLEX_CLK_SE0"),
 PINCTRL_PIN(85"FLEX_CLK_SE1"),
 PINCTRL_PIN(86"SPARE_4"),
 PINCTRL_PIN(87"SMB3_IE0_CLK"),
 PINCTRL_PIN(88"SMB3_IE0_DATA"),
 PINCTRL_PIN(89"SMB3_IE0_ALRT_N"),
 PINCTRL_PIN(90"SATA0_LED_N"),
 PINCTRL_PIN(91"SATA1_LED_N"),
 PINCTRL_PIN(92"SATA_PDETECT0"),
 PINCTRL_PIN(93"SATA_PDETECT1"),
 PINCTRL_PIN(94"UART1_RTS"),
 PINCTRL_PIN(95"UART1_CTS"),
 PINCTRL_PIN(96"UART1_RXD"),
 PINCTRL_PIN(97"UART1_TXD"),
 PINCTRL_PIN(98"SPARE_8"),
 PINCTRL_PIN(99"SPARE_9"),
 PINCTRL_PIN(100"TCK"),
 PINCTRL_PIN(101"TRST_N"),
 PINCTRL_PIN(102"TMS"),
 PINCTRL_PIN(103"TDI"),
 PINCTRL_PIN(104"TDO"),
 PINCTRL_PIN(105"CX_PRDY_N"),
 PINCTRL_PIN(106"CX_PREQ_N"),
 PINCTRL_PIN(107"TAP1_TCK"),
 PINCTRL_PIN(108"TAP1_TRST_N"),
 PINCTRL_PIN(109"TAP1_TMS"),
 PINCTRL_PIN(110"TAP1_TDI"),
 PINCTRL_PIN(111"TAP1_TDO"),
 /* South GPP1 */
 PINCTRL_PIN(112"SUSPWRDNACK"),
 PINCTRL_PIN(113"PMU_SUSCLK"),
 PINCTRL_PIN(114"ADR_TRIGGER"),
 PINCTRL_PIN(115"PMU_SLP_S45_N"),
 PINCTRL_PIN(116"PMU_SLP_S3_N"),
 PINCTRL_PIN(117"PMU_WAKE_N"),
 PINCTRL_PIN(118"PMU_PWRBTN_N"),
 PINCTRL_PIN(119"PMU_RESETBUTTON_N"),
 PINCTRL_PIN(120"PMU_PLTRST_N"),
 PINCTRL_PIN(121"SUS_STAT_N"),
 PINCTRL_PIN(122"SLP_S0IX_N"),
 PINCTRL_PIN(123"SPI_CS0_N"),
 PINCTRL_PIN(124"SPI_CS1_N"),
 PINCTRL_PIN(125"SPI_MOSI_IO0"),
 PINCTRL_PIN(126"SPI_MISO_IO1"),
 PINCTRL_PIN(127"SPI_IO2"),
 PINCTRL_PIN(128"SPI_IO3"),
 PINCTRL_PIN(129"SPI_CLK"),
 PINCTRL_PIN(130"SPI_CLK_LOOPBK"),
 PINCTRL_PIN(131"ESPI_IO0"),
 PINCTRL_PIN(132"ESPI_IO1"),
 PINCTRL_PIN(133"ESPI_IO2"),
 PINCTRL_PIN(134"ESPI_IO3"),
 PINCTRL_PIN(135"ESPI_CS0_N"),
 PINCTRL_PIN(136"ESPI_CLK"),
 PINCTRL_PIN(137"ESPI_RST_N"),
 PINCTRL_PIN(138"ESPI_ALRT0_N"),
 PINCTRL_PIN(139"ESPI_CS1_N"),
 PINCTRL_PIN(140"ESPI_ALRT1_N"),
 PINCTRL_PIN(141"ESPI_CLK_LOOPBK"),
 PINCTRL_PIN(142"EMMC_CMD"),
 PINCTRL_PIN(143"EMMC_STROBE"),
 PINCTRL_PIN(144"EMMC_CLK"),
 PINCTRL_PIN(145"EMMC_D0"),
 PINCTRL_PIN(146"EMMC_D1"),
 PINCTRL_PIN(147"EMMC_D2"),
 PINCTRL_PIN(148"EMMC_D3"),
 PINCTRL_PIN(149"EMMC_D4"),
 PINCTRL_PIN(150"EMMC_D5"),
 PINCTRL_PIN(151"EMMC_D6"),
 PINCTRL_PIN(152"EMMC_D7"),
 PINCTRL_PIN(153"SPARE_3"),
};

static const unsigned int dnv_uart0_pins[] = { 60616465 };
static const unsigned int dnv_uart0_modes[] = { 2311 };
static const unsigned int dnv_uart1_pins[] = { 94959697 };
static const unsigned int dnv_uart2_pins[] = { 60616263 };
static const unsigned int dnv_uart2_modes[] = { 1222 };
static const unsigned int dnv_emmc_pins[] = {
 142143144145146147148149150151152,
};

static const struct intel_pingroup dnv_groups[] = {
 PIN_GROUP("uart0_grp", dnv_uart0_pins, dnv_uart0_modes),
 PIN_GROUP("uart1_grp", dnv_uart1_pins, 1),
 PIN_GROUP("uart2_grp", dnv_uart2_pins, dnv_uart2_modes),
 PIN_GROUP("emmc_grp", dnv_emmc_pins, 1),
};

static const char * const dnv_uart0_groups[] = { "uart0_grp" };
static const char * const dnv_uart1_groups[] = { "uart1_grp" };
static const char * const dnv_uart2_groups[] = { "uart2_grp" };
static const char * const dnv_emmc_groups[] = { "emmc_grp" };

static const struct intel_function dnv_functions[] = {
 FUNCTION("uart0", dnv_uart0_groups),
 FUNCTION("uart1", dnv_uart1_groups),
 FUNCTION("uart2", dnv_uart2_groups),
 FUNCTION("emmc", dnv_emmc_groups),
};

static const struct intel_padgroup dnv_north_gpps[] = {
 DNV_GPP(0031), /* North ALL_0 */
 DNV_GPP(13240), /* North ALL_1 */
};

static const struct intel_padgroup dnv_south_gpps[] = {
 DNV_GPP(04158), /* South DFX */
 DNV_GPP(15990), /* South GPP0_0 */
 DNV_GPP(291111), /* South GPP0_1 */
 DNV_GPP(3112143), /* South GPP1_0 */
 DNV_GPP(4144153), /* South GPP1_1 */
};

static const struct intel_community dnv_communities[] = {
 DNV_COMMUNITY(0040, dnv_north_gpps),
 DNV_COMMUNITY(141153, dnv_south_gpps),
};

static const struct intel_pinctrl_soc_data dnv_soc_data = {
 .pins = dnv_pins,
 .npins = ARRAY_SIZE(dnv_pins),
 .groups = dnv_groups,
 .ngroups = ARRAY_SIZE(dnv_groups),
 .functions = dnv_functions,
 .nfunctions = ARRAY_SIZE(dnv_functions),
 .communities = dnv_communities,
 .ncommunities = ARRAY_SIZE(dnv_communities),
};

static const struct acpi_device_id dnv_pinctrl_acpi_match[] = {
 { "INTC3000", (kernel_ulong_t)&dnv_soc_data },
 { }
};
MODULE_DEVICE_TABLE(acpi, dnv_pinctrl_acpi_match);

static const struct platform_device_id dnv_pinctrl_platform_ids[] = {
 { "denverton-pinctrl", (kernel_ulong_t)&dnv_soc_data },
 { }
};
MODULE_DEVICE_TABLE(platform, dnv_pinctrl_platform_ids);

static struct platform_driver dnv_pinctrl_driver = {
 .probe = intel_pinctrl_probe_by_hid,
 .driver = {
  .name = "denverton-pinctrl",
  .acpi_match_table = dnv_pinctrl_acpi_match,
  .pm = pm_sleep_ptr(&intel_pinctrl_pm_ops),
 },
 .id_table = dnv_pinctrl_platform_ids,
};

static int __init dnv_pinctrl_init(void)
{
 return platform_driver_register(&dnv_pinctrl_driver);
}
subsys_initcall(dnv_pinctrl_init);

static void __exit dnv_pinctrl_exit(void)
{
 platform_driver_unregister(&dnv_pinctrl_driver);
}
module_exit(dnv_pinctrl_exit);

MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
MODULE_DESCRIPTION("Intel Denverton SoC pinctrl/GPIO driver");
MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS("PINCTRL_INTEL");

Messung V0.5 in Prozent
C=96 H=90 G=93

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-06-08) ¤

*© Formatika GbR, Deutschland






Versionsinformation zu Columbo

Bemerkung:

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Anfrage:

Dauer der Verarbeitung:

Sekunden

sprechenden Kalenders






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002