// 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, 0 x12c, 6 ),
CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x000, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa00),
CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x004, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa04),
CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x008, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa08),
CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x00c, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa0c),
CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x010, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa10),
CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x014, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xa14),
CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x018, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x900),
CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x01c, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x904),
CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x020, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x908),
CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x024, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x90c),
CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x028, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x910),
CV1800_GENERAL_PIN(PIN_SPINOR_HOLD_X, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x02c, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x914),
CV1800_GENERAL_PIN(PIN_SPINOR_SCK, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x030, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x918),
CV1800_GENERAL_PIN(PIN_SPINOR_MOSI, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x034, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x91c),
CV1800_GENERAL_PIN(PIN_SPINOR_WP_X, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x038, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x920),
CV1800_GENERAL_PIN(PIN_SPINOR_MISO, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x03c, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x924),
CV1800_GENERAL_PIN(PIN_SPINOR_CS_X, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x040, 3 ,
CV1800_PINCONF_AREA_SYS, 0 x928),
CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x04c, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x934),
CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x050, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x938),
CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_SD0_SPI,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x054, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x93c),
CV1800_GENERAL_PIN(PIN_PWR_VBAT_DET, VDDIO_RTC,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x05c, 0 ,
CV1800_PINCONF_AREA_RTC, 0 x004),
CV1800_GENERAL_PIN(PIN_PWR_SEQ2, VDDIO_RTC,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x068, 3 ,
CV1800_PINCONF_AREA_RTC, 0 x010),
CV1800_GENERAL_PIN(PIN_XTAL_XIN, VDDIO_RTC,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x074, 0 ,
CV1800_PINCONF_AREA_RTC, 0 x020),
CV1800_GENERAL_PIN(PIN_SD1_GPIO0, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x088, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x034),
CV1800_GENERAL_PIN(PIN_SD1_GPIO1, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x084, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x030),
CV1800_GENERAL_PIN(PIN_SD1_D3, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x08c, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x038),
CV1800_GENERAL_PIN(PIN_SD1_D2, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x090, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x03c),
CV1800_GENERAL_PIN(PIN_SD1_D1, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x094, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x040),
CV1800_GENERAL_PIN(PIN_SD1_D0, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x098, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x044),
CV1800_GENERAL_PIN(PIN_SD1_CMD, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x09c, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x048),
CV1800_GENERAL_PIN(PIN_SD1_CLK, VDD33A_ETH_USB_SD1,
IO_TYPE_1V8_OR_3V3,
CV1800_PINCONF_AREA_SYS, 0 x0a0, 7 ,
CV1800_PINCONF_AREA_RTC, 0 x04c),
CV1800_GENERAL_PIN(PIN_ADC1, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0a8, 6 ,
CV1800_PINCONF_AREA_SYS, 0 x804),
CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0ac, 6 ,
CV1800_PINCONF_AREA_SYS, 0 x808),
CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_ETH,
CV1800_PINCONF_AREA_SYS, 0 x0c0, 7 ),
CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_ETH,
CV1800_PINCONF_AREA_SYS, 0 x0c4, 7 ),
CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_ETH,
CV1800_PINCONF_AREA_SYS, 0 x0c8, 7 ),
CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_ETH,
CV1800_PINCONF_AREA_SYS, 0 x0cc, 7 ),
CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4N, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0d4, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x0bc, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc04),
CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4P, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0d8, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x0b8, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc08),
CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3N, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0dc, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x0b0, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc0c),
CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3P, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0e0, 7 ,
CV1800_PINCONF_AREA_SYS, 0 x0b4, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc10),
CV1800_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0e4, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc14),
CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0e8, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc18),
CV1800_GENERAL_PIN(PIN_MIPIRX1N, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0ec, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc1c),
CV1800_GENERAL_PIN(PIN_MIPIRX1P, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0f0, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc20),
CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0f4, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc24),
CV1800_GENERAL_PIN(PIN_MIPIRX0P, VDD18A_USB_PLL_ETH_CSI,
IO_TYPE_1V8_ONLY,
CV1800_PINCONF_AREA_SYS, 0 x0f8, 7 ,
CV1800_PINCONF_AREA_SYS, 0 xc28),
CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_AUD,
IO_TYPE_AUDIO,
CV1800_PINCONF_AREA_SYS, 0 x120, 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 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland