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

Quelle  pinctrl-cv1800b.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Sophgo CV1800B SoC pinctrl driver.
 *
 * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com>
 *
 * This file is generated from vendor pinout definition.
 */


#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>

#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>

#include <dt-bindings/pinctrl/pinctrl-cv1800b.h>

#include "pinctrl-cv18xx.h"

enum CV1800B_POWER_DOMAIN {
 VDD18A_AUD  = 0,
 VDD18A_USB_PLL_ETH_CSI = 1,
 VDD33A_ETH_USB_SD1 = 2,
 VDDIO_RTC  = 3,
 VDDIO_SD0_SPI  = 4
};

static const char *const cv1800b_power_domain_desc[] = {
 [VDD18A_AUD]   = "VDD18A_AUD",
 [VDD18A_USB_PLL_ETH_CSI] = "VDD18A_USB_PLL_ETH_CSI",
 [VDD33A_ETH_USB_SD1]  = "VDD33A_ETH_USB_SD1",
 [VDDIO_RTC]   = "VDDIO_RTC",
 [VDDIO_SD0_SPI]   = "VDDIO_SD0_SPI",
};

static int cv1800b_get_pull_up(const struct sophgo_pin *sp, const u32 *psmap)
{
 const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
 u32 pstate = psmap[pin->power_domain];
 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);

 if (type == IO_TYPE_1V8_ONLY)
  return 79000;

 if (type == IO_TYPE_1V8_OR_3V3) {
  if (pstate == PIN_POWER_STATE_1V8)
   return 60000;
  if (pstate == PIN_POWER_STATE_3V3)
   return 60000;

  return -EINVAL;
 }

 return -ENOTSUPP;
}

static int cv1800b_get_pull_down(const struct sophgo_pin *sp, const u32 *psmap)
{
 const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
 u32 pstate = psmap[pin->power_domain];
 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);

 if (type == IO_TYPE_1V8_ONLY)
  return 87000;

 if (type == IO_TYPE_1V8_OR_3V3) {
  if (pstate == PIN_POWER_STATE_1V8)
   return 61000;
  if (pstate == PIN_POWER_STATE_3V3)
   return 62000;

  return -EINVAL;
 }

 return -ENOTSUPP;
}

static const u32 cv1800b_1v8_oc_map[] = {
 12800,
 25300,
 37400,
 49000
};

static const u32 cv1800b_18od33_1v8_oc_map[] = {
 7800,
 11700,
 15500,
 19200,
 23000,
 26600,
 30200,
 33700
};

static const u32 cv1800b_18od33_3v3_oc_map[] = {
 5500,
 8200,
 10800,
 13400,
 16100,
 18700,
 21200,
 23700
};

static const u32 cv1800b_eth_oc_map[] = {
 15700,
 17800
};

static int cv1800b_get_oc_map(const struct sophgo_pin *sp, const u32 *psmap,
         const u32 **map)
{
 const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
 u32 pstate = psmap[pin->power_domain];

 if (type == IO_TYPE_1V8_ONLY) {
  *map = cv1800b_1v8_oc_map;
  return ARRAY_SIZE(cv1800b_1v8_oc_map);
 }

 if (type == IO_TYPE_1V8_OR_3V3) {
  if (pstate == PIN_POWER_STATE_1V8) {
   *map = cv1800b_18od33_1v8_oc_map;
   return ARRAY_SIZE(cv1800b_18od33_1v8_oc_map);
  } else if (pstate == PIN_POWER_STATE_3V3) {
   *map = cv1800b_18od33_3v3_oc_map;
   return ARRAY_SIZE(cv1800b_18od33_3v3_oc_map);
  }
 }

 if (type == IO_TYPE_ETH) {
  *map = cv1800b_eth_oc_map;
  return ARRAY_SIZE(cv1800b_eth_oc_map);
 }

 return -ENOTSUPP;
}

static const u32 cv1800b_1v8_schmitt_map[] = {
 0,
 970000,
 1040000
};

static const u32 cv1800b_18od33_1v8_schmitt_map[] = {
 0,
 1070000
};

static const u32 cv1800b_18od33_3v3_schmitt_map[] = {
 0,
 1100000
};

static int cv1800b_get_schmitt_map(const struct sophgo_pin *sp, const u32 *psmap,
       const u32 **map)
{
 const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
 u32 pstate = psmap[pin->power_domain];

 if (type == IO_TYPE_1V8_ONLY) {
  *map = cv1800b_1v8_schmitt_map;
  return ARRAY_SIZE(cv1800b_1v8_schmitt_map);
 }

 if (type == IO_TYPE_1V8_OR_3V3) {
  if (pstate == PIN_POWER_STATE_1V8) {
   *map = cv1800b_18od33_1v8_schmitt_map;
   return ARRAY_SIZE(cv1800b_18od33_1v8_schmitt_map);
  } else if (pstate == PIN_POWER_STATE_3V3) {
   *map = cv1800b_18od33_3v3_schmitt_map;
   return ARRAY_SIZE(cv1800b_18od33_3v3_schmitt_map);
  }
 }

 return -ENOTSUPP;
}

static const struct sophgo_vddio_cfg_ops cv1800b_vddio_cfg_ops = {
 .get_pull_up  = cv1800b_get_pull_up,
 .get_pull_down  = cv1800b_get_pull_down,
 .get_oc_map  = cv1800b_get_oc_map,
 .get_schmitt_map = cv1800b_get_schmitt_map,
};

static const struct pinctrl_pin_desc cv1800b_pins[] = {
 PINCTRL_PIN(PIN_AUD_AOUTR, "AUD_AOUTR"),
 PINCTRL_PIN(PIN_SD0_CLK, "SD0_CLK"),
 PINCTRL_PIN(PIN_SD0_CMD, "SD0_CMD"),
 PINCTRL_PIN(PIN_SD0_D0,  "SD0_D0"),
 PINCTRL_PIN(PIN_SD0_D1,  "SD0_D1"),
 PINCTRL_PIN(PIN_SD0_D2,  "SD0_D2"),
 PINCTRL_PIN(PIN_SD0_D3,  "SD0_D3"),
 PINCTRL_PIN(PIN_SD0_CD,  "SD0_CD"),
 PINCTRL_PIN(PIN_SD0_PWR_EN, "SD0_PWR_EN"),
 PINCTRL_PIN(PIN_SPK_EN,  "SPK_EN"),
 PINCTRL_PIN(PIN_UART0_TX, "UART0_TX"),
 PINCTRL_PIN(PIN_UART0_RX, "UART0_RX"),
 PINCTRL_PIN(PIN_SPINOR_HOLD_X, "SPINOR_HOLD_X"),
 PINCTRL_PIN(PIN_SPINOR_SCK, "SPINOR_SCK"),
 PINCTRL_PIN(PIN_SPINOR_MOSI, "SPINOR_MOSI"),
 PINCTRL_PIN(PIN_SPINOR_WP_X, "SPINOR_WP_X"),
 PINCTRL_PIN(PIN_SPINOR_MISO, "SPINOR_MISO"),
 PINCTRL_PIN(PIN_SPINOR_CS_X, "SPINOR_CS_X"),
 PINCTRL_PIN(PIN_IIC0_SCL, "IIC0_SCL"),
 PINCTRL_PIN(PIN_IIC0_SDA, "IIC0_SDA"),
 PINCTRL_PIN(PIN_AUX0,  "AUX0"),
 PINCTRL_PIN(PIN_PWR_VBAT_DET, "PWR_VBAT_DET"),
 PINCTRL_PIN(PIN_PWR_SEQ2, "PWR_SEQ2"),
 PINCTRL_PIN(PIN_XTAL_XIN, "XTAL_XIN"),
 PINCTRL_PIN(PIN_SD1_GPIO0, "SD1_GPIO0"),
 PINCTRL_PIN(PIN_SD1_GPIO1, "SD1_GPIO1"),
 PINCTRL_PIN(PIN_SD1_D3,  "SD1_D3"),
 PINCTRL_PIN(PIN_SD1_D2,  "SD1_D2"),
 PINCTRL_PIN(PIN_SD1_D1,  "SD1_D1"),
 PINCTRL_PIN(PIN_SD1_D0,  "SD1_D0"),
 PINCTRL_PIN(PIN_SD1_CMD, "SD1_CMD"),
 PINCTRL_PIN(PIN_SD1_CLK, "SD1_CLK"),
 PINCTRL_PIN(PIN_ADC1,  "ADC1"),
 PINCTRL_PIN(PIN_USB_VBUS_DET, "USB_VBUS_DET"),
 PINCTRL_PIN(PIN_ETH_TXP, "ETH_TXP"),
 PINCTRL_PIN(PIN_ETH_TXM, "ETH_TXM"),
 PINCTRL_PIN(PIN_ETH_RXP, "ETH_RXP"),
 PINCTRL_PIN(PIN_ETH_RXM, "ETH_RXM"),
 PINCTRL_PIN(PIN_MIPIRX4N, "MIPIRX4N"),
 PINCTRL_PIN(PIN_MIPIRX4P, "MIPIRX4P"),
 PINCTRL_PIN(PIN_MIPIRX3N, "MIPIRX3N"),
 PINCTRL_PIN(PIN_MIPIRX3P, "MIPIRX3P"),
 PINCTRL_PIN(PIN_MIPIRX2N, "MIPIRX2N"),
 PINCTRL_PIN(PIN_MIPIRX2P, "MIPIRX2P"),
 PINCTRL_PIN(PIN_MIPIRX1N, "MIPIRX1N"),
 PINCTRL_PIN(PIN_MIPIRX1P, "MIPIRX1P"),
 PINCTRL_PIN(PIN_MIPIRX0N, "MIPIRX0N"),
 PINCTRL_PIN(PIN_MIPIRX0P, "MIPIRX0P"),
 PINCTRL_PIN(PIN_AUD_AINL_MIC, "AUD_AINL_MIC"),
};

static const struct cv1800_pin cv1800b_pin_data[ARRAY_SIZE(cv1800b_pins)] = {
 CV1800_FUNC_PIN(PIN_AUD_AOUTR, VDD18A_AUD,
   IO_TYPE_AUDIO,
   CV1800_PINCONF_AREA_SYS, 0x12c, 6),
 CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x000, 7,
      CV1800_PINCONF_AREA_SYS, 0xa00),
 CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x004, 7,
      CV1800_PINCONF_AREA_SYS, 0xa04),
 CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x008, 7,
      CV1800_PINCONF_AREA_SYS, 0xa08),
 CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x00c, 7,
      CV1800_PINCONF_AREA_SYS, 0xa0c),
 CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x010, 7,
      CV1800_PINCONF_AREA_SYS, 0xa10),
 CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x014, 7,
      CV1800_PINCONF_AREA_SYS, 0xa14),
 CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x018, 3,
      CV1800_PINCONF_AREA_SYS, 0x900),
 CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x01c, 3,
      CV1800_PINCONF_AREA_SYS, 0x904),
 CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x020, 3,
      CV1800_PINCONF_AREA_SYS, 0x908),
 CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x024, 7,
      CV1800_PINCONF_AREA_SYS, 0x90c),
 CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x028, 7,
      CV1800_PINCONF_AREA_SYS, 0x910),
 CV1800_GENERAL_PIN(PIN_SPINOR_HOLD_X, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x02c, 3,
      CV1800_PINCONF_AREA_SYS, 0x914),
 CV1800_GENERAL_PIN(PIN_SPINOR_SCK, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x030, 3,
      CV1800_PINCONF_AREA_SYS, 0x918),
 CV1800_GENERAL_PIN(PIN_SPINOR_MOSI, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x034, 3,
      CV1800_PINCONF_AREA_SYS, 0x91c),
 CV1800_GENERAL_PIN(PIN_SPINOR_WP_X, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x038, 3,
      CV1800_PINCONF_AREA_SYS, 0x920),
 CV1800_GENERAL_PIN(PIN_SPINOR_MISO, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x03c, 3,
      CV1800_PINCONF_AREA_SYS, 0x924),
 CV1800_GENERAL_PIN(PIN_SPINOR_CS_X, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x040, 3,
      CV1800_PINCONF_AREA_SYS, 0x928),
 CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x04c, 7,
      CV1800_PINCONF_AREA_SYS, 0x934),
 CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x050, 7,
      CV1800_PINCONF_AREA_SYS, 0x938),
 CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_SD0_SPI,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x054, 7,
      CV1800_PINCONF_AREA_SYS, 0x93c),
 CV1800_GENERAL_PIN(PIN_PWR_VBAT_DET, VDDIO_RTC,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x05c, 0,
      CV1800_PINCONF_AREA_RTC, 0x004),
 CV1800_GENERAL_PIN(PIN_PWR_SEQ2, VDDIO_RTC,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x068, 3,
      CV1800_PINCONF_AREA_RTC, 0x010),
 CV1800_GENERAL_PIN(PIN_XTAL_XIN, VDDIO_RTC,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x074, 0,
      CV1800_PINCONF_AREA_RTC, 0x020),
 CV1800_GENERAL_PIN(PIN_SD1_GPIO0, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x088, 7,
      CV1800_PINCONF_AREA_RTC, 0x034),
 CV1800_GENERAL_PIN(PIN_SD1_GPIO1, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x084, 7,
      CV1800_PINCONF_AREA_RTC, 0x030),
 CV1800_GENERAL_PIN(PIN_SD1_D3, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x08c, 7,
      CV1800_PINCONF_AREA_RTC, 0x038),
 CV1800_GENERAL_PIN(PIN_SD1_D2, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x090, 7,
      CV1800_PINCONF_AREA_RTC, 0x03c),
 CV1800_GENERAL_PIN(PIN_SD1_D1, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x094, 7,
      CV1800_PINCONF_AREA_RTC, 0x040),
 CV1800_GENERAL_PIN(PIN_SD1_D0, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x098, 7,
      CV1800_PINCONF_AREA_RTC, 0x044),
 CV1800_GENERAL_PIN(PIN_SD1_CMD, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x09c, 7,
      CV1800_PINCONF_AREA_RTC, 0x048),
 CV1800_GENERAL_PIN(PIN_SD1_CLK, VDD33A_ETH_USB_SD1,
      IO_TYPE_1V8_OR_3V3,
      CV1800_PINCONF_AREA_SYS, 0x0a0, 7,
      CV1800_PINCONF_AREA_RTC, 0x04c),
 CV1800_GENERAL_PIN(PIN_ADC1, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0a8, 6,
      CV1800_PINCONF_AREA_SYS, 0x804),
 CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0ac, 6,
      CV1800_PINCONF_AREA_SYS, 0x808),
 CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_USB_PLL_ETH_CSI,
   IO_TYPE_ETH,
   CV1800_PINCONF_AREA_SYS, 0x0c0, 7),
 CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_USB_PLL_ETH_CSI,
   IO_TYPE_ETH,
   CV1800_PINCONF_AREA_SYS, 0x0c4, 7),
 CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_USB_PLL_ETH_CSI,
   IO_TYPE_ETH,
   CV1800_PINCONF_AREA_SYS, 0x0c8, 7),
 CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_USB_PLL_ETH_CSI,
   IO_TYPE_ETH,
   CV1800_PINCONF_AREA_SYS, 0x0cc, 7),
 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4N, VDD18A_USB_PLL_ETH_CSI,
     IO_TYPE_1V8_ONLY,
     CV1800_PINCONF_AREA_SYS, 0x0d4, 7,
     CV1800_PINCONF_AREA_SYS, 0x0bc, 7,
     CV1800_PINCONF_AREA_SYS, 0xc04),
 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4P, VDD18A_USB_PLL_ETH_CSI,
     IO_TYPE_1V8_ONLY,
     CV1800_PINCONF_AREA_SYS, 0x0d8, 7,
     CV1800_PINCONF_AREA_SYS, 0x0b8, 7,
     CV1800_PINCONF_AREA_SYS, 0xc08),
 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3N, VDD18A_USB_PLL_ETH_CSI,
     IO_TYPE_1V8_ONLY,
     CV1800_PINCONF_AREA_SYS, 0x0dc, 7,
     CV1800_PINCONF_AREA_SYS, 0x0b0, 7,
     CV1800_PINCONF_AREA_SYS, 0xc0c),
 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3P, VDD18A_USB_PLL_ETH_CSI,
     IO_TYPE_1V8_ONLY,
     CV1800_PINCONF_AREA_SYS, 0x0e0, 7,
     CV1800_PINCONF_AREA_SYS, 0x0b4, 7,
     CV1800_PINCONF_AREA_SYS, 0xc10),
 CV1800_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0e4, 7,
      CV1800_PINCONF_AREA_SYS, 0xc14),
 CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0e8, 7,
      CV1800_PINCONF_AREA_SYS, 0xc18),
 CV1800_GENERAL_PIN(PIN_MIPIRX1N, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0ec, 7,
      CV1800_PINCONF_AREA_SYS, 0xc1c),
 CV1800_GENERAL_PIN(PIN_MIPIRX1P, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0f0, 7,
      CV1800_PINCONF_AREA_SYS, 0xc20),
 CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0f4, 7,
      CV1800_PINCONF_AREA_SYS, 0xc24),
 CV1800_GENERAL_PIN(PIN_MIPIRX0P, VDD18A_USB_PLL_ETH_CSI,
      IO_TYPE_1V8_ONLY,
      CV1800_PINCONF_AREA_SYS, 0x0f8, 7,
      CV1800_PINCONF_AREA_SYS, 0xc28),
 CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_AUD,
   IO_TYPE_AUDIO,
   CV1800_PINCONF_AREA_SYS, 0x120, 5),
};

static const struct sophgo_pinctrl_data cv1800b_pindata = {
 .pins  = cv1800b_pins,
 .pindata = cv1800b_pin_data,
 .pdnames = cv1800b_power_domain_desc,
 .vddio_ops = &cv1800b_vddio_cfg_ops,
 .cfg_ops = &cv1800_cfg_ops,
 .pctl_ops = &cv1800_pctrl_ops,
 .pmx_ops = &cv1800_pmx_ops,
 .pconf_ops = &cv1800_pconf_ops,
 .npins  = ARRAY_SIZE(cv1800b_pins),
 .npds  = ARRAY_SIZE(cv1800b_power_domain_desc),
 .pinsize = sizeof(struct cv1800_pin),
};

static const struct of_device_id cv1800b_pinctrl_ids[] = {
 { .compatible = "sophgo,cv1800b-pinctrl", .data = &cv1800b_pindata },
 { }
};
MODULE_DEVICE_TABLE(of, cv1800b_pinctrl_ids);

static struct platform_driver cv1800b_pinctrl_driver = {
 .probe = sophgo_pinctrl_probe,
 .driver = {
  .name   = "cv1800b-pinctrl",
  .suppress_bind_attrs = true,
  .of_match_table  = cv1800b_pinctrl_ids,
 },
};
module_platform_driver(cv1800b_pinctrl_driver);

MODULE_DESCRIPTION("Pinctrl driver for the CV1800B series SoC");
MODULE_LICENSE("GPL");

Messung V0.5
C=96 H=94 G=94

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© 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.