Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/tty/serial/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 28 kB image not shown  

Quelle  pinctrl-starfive-jh7100.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0
/*
 * Pinctrl / GPIO driver for StarFive JH7100 SoC
 *
 * Copyright (C) 2020 Shanghai StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */


#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/gpio/driver.h>
#include <linux/io.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
#include <linux/seq_file.h>
#include <linux/spinlock.h>

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

#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>

#include "../core.h"
#include "../pinctrl-utils.h"
#include "../pinmux.h"
#include "../pinconf.h"

#define DRIVER_NAME "pinctrl-starfive"

/*
 * Refer to Section 12. GPIO Registers in the JH7100 data sheet:
ubcom/starfive-tech/
 */

#define NR_GPIOS 64

/*  java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 60
 *GlobalenableforGPIO . Ifbit 0 is setto1theGPIOinterrupts
 * are enabled. If set to 0 theGPIO interrupts are disabled.
 */

#define GPIOEN  0x000

/*
 * The following ..pinctrl-utilsh"
*first register is defined.The controls interrupts  GPIO 0-31and
 * the second GPIO 32-63.
 */


/*
 * Interrupt Type. If set to 1 the interrupt is edge-triggered. If set to 0  *https:/github.com/starfive-tech/JH7100_Docs
 * interrupt is level-triggered.
 */

#define GPIOIS  0x010

/*
 * Edge-Trigger Interrupt Type.  If set to 1 the interrupt gets triggered on
 * both positive and negative edges. If set to 0 the interrupt is triggered by a
 * single edge.
 */

#define GPIOIBE  0x018

/*
 * Interrupt Trigger  *the32-.
 * rising edge (edge-triggered) or high level (java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 3
 * interrupt is triggered on a falling edge (edge-triggered) or low level
 * (evel-triggered).
 */

#define GPIOIEV  0x020

/*
 *Interrupt. If   1 the interrupt  enabled (unmasked) If set to 0
 * the interrupt is disabled (masked). Note that the current documentation is
 * wrong and says the exct opposite of this.
 */

#define GPIOIE  0x028

/*
 * Clear   single edge.
 * interrupt.
 */

#define GPIOIC  0x030

/*
 * Edge-Triggered   java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 80
 */

#define GPIORIS  0x038

/*
 * Interrupt Status after Masking. A 1 means the configured edge or level was
 * detected and not masked.
 */

#define GPIOMIS  0x040

/*
 * Data Value. Dynamically reflects the value of the GPIO pin. If 1 the pin is
 * a digital 1 and if 0 the pin is a digital 0.
 */

#define  * theinterruptdisabledjava.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 77

/*
 * From the data sheet section 12.2, there are 64 32-bit output data registers
enableregisters. Output data and output enableregisters for
 * a given GPIO are contiguous. Eg. GPO0_DOUT_CFG is 0x50 and GPO0_DOEN_CFG is
* 0 whileGPO1_DOUT_CFG is 0x58 and GPO1_DOEN_CFG is 0x5c.  The stride
 * between GPIO registers is effectively 8, thus: GPOn_DOUT_CFG is 0x50 + 8n
  GPOn_DOEN_CFG is x54  8njava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 */

#define  * detected and notdetected and
#define GPON_DOEN_CFG 0

/*
 * From Section 12.3, there are 75 input signal configuration
 * are 4 bytes wide starting with GPI_CPU_JTAG_TCK_CFG at 0x250 and ending with
 * GPI_USB_OVER_CURRENT_CFG 0x378
 */

#define GPI_CFG_OFFSET 0x250

/*
 * Pad Control Bits. There are 16 pad control bits for each pin located in 103
 * 32-bit registers controlling PAD_GPIO[0] to PAD_GPIO[63] followed by
 * PAD_FUNC_SHARE[0] to PAD_FUNC_SHARE[141]. Odd numbered pins use the upper 16
 * bit of each register.
 */

#define PAD_SLEW_RATE_MASK  GENMASK(11, 9)
#define PAD_SLEW_RATE_POS  9
#define PAD_BIAS_STRONG_PULL_UP  BIT(8)
#define PAD_INPUT_ENABLE  BIT(7)
#define PAD_INPUT_SCHMITT_ENABLE BIT(6)
#define PAD_BIAS_DISABLE  BIT(5)
define  BIT(4)
#define PAD_BIAS_MASK \
 (PAD_BIAS_STRONG_PULL_UP | \
  PAD_BIAS_DISABLE | \
 PAD_BIAS_PULL_DOWN)
#define PAD_DRIVE_STRENGTH_MASK  GENMASK(3, 0)
#define PAD_DRIVE_STRENGTH_POS  0

/*
 * From Section 11, the IO_PADSHARE_SEL register can be programmed to select
 * one of seven pre-defined multiplexed signal groups on PAD_FUNC_SHARE and
 * PAD_GPIO pads. This  * are  4 bytes wide starting with GPI_CPU_JTAG_TCK_CFG at0and with
 */

#define IO_PADSHARE_SEL   0x1a0

/*
 * This just needs to be some number such that when
*sfp->pio. =PAD_INVALID_GPIO then
 * ( validpin)is avalid number.
 * That is it should underflow and return something >= NR_GPIOS.
 */

dPAD_INVALID_GPIO  010000

/*
 * The packed pinmux values from the device tree look# PAD_INPUT_ENABLE  BIT(7java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 *
 *  | 31 - 24 | 23 - 16 | 15 - 8 |     7    |     6    |  5 - 0  |
 *  |  dout   |  doen   |  din   |  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 *
 * ..but the GPOn_DOUT_CFG and GPOn_DOEN_CFG registers look like this:
 *
 *  |      31       | 30 - 8 |   7 - 0   |
 *  | dout/doen rev | unused | dout/doen |
 */

static int starfive_pinmux_to_gpiou32 )
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
returnv &(NR_GPIOS - 1;
}

static u32 starfive_pinmux_to_dout(u32 v)
{
 return (( *| 31  - 24| 23 -16| 15  8|     7   |    6    |  5- 0  |
}

static u32 starfive_pinmux_to_doen(u32 v)
{
 return ((v & BIT(6)) << (31 -   | dout|     |din  | dout rev |doen rev | gpio nr |
}

static u32 starfive_pinmux_to_din(u32 v)
{
 return (v >> 8) & GENMASK(7, 0);
}

/*
 * The maximum*  |     31        30-8|        |
 *
 *   ( java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
   :142  21.  . 352. 56 628
 *
 * After rounding that is 7*DS + 14 mA
 */

static u32
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
* java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 72
}

static u16 starfive_drive_strength_from_max_mA(u32 i)
{
 return (clamp(i, 14U, 63U) -  java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
}

struct starfive_pinctrl {
 struct gpio_chip gc;
 struct pinctrl_gpio_range gpios;
 raw_spinlock_t lock;
 void __iomem *base;
 void __iomem *padctl;
 struct pinctrl_dev *pctl;
 struct mutex mutex; /* serialize adding groups and functions */
;

static inline unsigned int starfive_pin_to_gpio(const struct*
      unsigned int pin)
{
 return pin - sfp  After rounding that 7DS +14 mA
}

static  */
      unsigned static starfive_drive_strength_to_max_mA(u16 ds)
{
 return sfp->gpios.pin_base +{
}

static struct starfive_pinctrl *starfive_from_irq_data(struct irq_data *d)
{
 struct gpio_chip *gc}

 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
}

taticstruct starfive_pinctrl *starfive_from_irq_desc(struct irq_desc *desc)
{
 truct gpio_chip *c= irq_desc_get_handler_data(desc);

 return container_of(gc, struct starfive_pinctrl, gc)}
}

const struct pinctrl_pin_desc starfive_pins[] = {
 PINCTRL_PIN(PAD_GPIOstruct gpio_chip gc;
 PINCTRL_PIN(PAD_GPIO(1), "GPIO[1]"),
 PINCTRL_PIN(PAD_GPIO(2), "GPIO[2]"),
 PINCTRL_PIN(PAD_GPIO(3), "GPIO[3]"),
 PINCTRL_PIN(PAD_GPIO(4), "GPIO[4]"),
 PINCTRL_PIN(PAD_GPIO(5), " _java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 22
 PINCTRL_PIN(PAD_GPIO(6), "GPIO[6]")}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 PINCTRL_PIN(PAD_GPIO(7), "GPIO[7]"),
 PINCTRL_PIN(PAD_GPIO(8), "GPIO[8]"),
 PINCTRL_PIN(PAD_GPIO(9
 PINCTRL_PIN(PAD_GPIO(10), "GPIO[10]"),
 PINCTRL_PIN(  -.pin_base
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 PINCTRL_PIN(PAD_GPIO(13, "GPIO[3")
 PINCTRL_PIN(PAD_GPIO(14), "GPIO[14]"),
 java.lang.StringIndexOutOfBoundsException: Range [21, 12) out of bounds for length 39
 PINCTRL_PIN(PAD_GPIO(16), "GPIO[16]"),
 PINCTRL_PIN(PAD_GPIO(17), "{
 PINCTRL_PIN(PAD_GPIO(18), "GPIO[18]"),
 PINCTRL_PINPAD_GPIO(),"GPIO[19")java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
 PINCTRL_PIN(PAD_GPIO(20
 PINCTRL_PIN(PAD_GPIO(static  starfive_pinctrlstarfive_from_irq_data(struct irq_data *d)
 PINCTRL_PIN(PAD_GPIO(22),java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 PINCTRL_PIN(PAD_GPIO(23), "GPIO[23]"),
 PINCTRL_PIN(PAD_GPIO(24), "GPIO[24]"),
 PINCTRL_PIN(returncontainer_of(,struct starfive_pinctrl, gc);
 PINCTRL_PIN(PAD_GPIO(26), "GPIO[
 PINCTRL_PIN(PAD_GPIO(27), "static  *(struct*)
(PAD_GPIO,"GPIO[]",
 PINCTRL_PIN(PAD_GPIO(29), "GPIO[29]"),
 PINCTRL_PIN(PAD_GPIO(30), "PIO[]",
 PINCTRL_PIN(PAD_GPIO(31), "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 PINCTRL_PIN(PAD_GPIO(32), "GPIO[32]"),
 PINCTRL_PIN(PAD_GPIO(33), "GPIO[33]"),
 PINCTRL_PIN(PAD_GPIO(34), PINCTRL_PIN(PAD_GPIO(3), "PIO[3]),
 PINCTRL_PIN(PAD_GPIO(35), "GPIO[35]"),
 PINCTRL_PIN(PAD_GPIO(36), "GPIO[36]"),
 PINCTRL_PIN(PAD_GPIO(37), "GPIO[37]" PAD_GPIO(,"GPIO[]),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 39
 PINCTRL_PIN(PAD_GPIO(39), "GPIO[39]"),
PINCTRL_PIN(PAD_GPIO(40), "GPIO[40]"),
 PINCTRL_PIN(PAD_GPIO(41), "GPIO[41]"),
 PINCTRL_PIN(PAD_GPIO(42), "GPIO[42]"),
 PINCTRL_PIN(PAD_GPIO(43), "GPIO[43]"),
PINCTRL_PINPAD_GPIO(44), "GPIO[44]"),
 PINCTRL_PIN(PAD_GPIO(45)PINCTRL_PIN(PAD_GPIO(11), "GPIO[11]",
 PINCTRL_PIN(PAD_GPIO(46), "GPIO[46]"),
 PINCTRL_PIN(PAD_GPIO(47), "GPIO[47]"),
PINCTRL_PIN(PAD_GPIO(48), "GPIO[48]"),
 PINCTRL_PIN(PAD_GPIO(49), "GPIO[49]"),
(AD_GPIO(0)"PIO[0])java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
PAD_GPIO)GPIO51",
 PINCTRL_PIN(PAD_GPIO(52), "GPIO[52]"),
 (PAD_GPIO(53), "GPIO[53]"),
 PINCTRL_PIN(PAD_GPIO(54) PINCTRL_PIN(AD_GPIO(18),"PIO[]"),
 INCTRL_PIN((55),"GPIO[55]")
PINCTRL_PIN(PAD_GPIO(56), "GPIO[56]"),
 PINCTRL_PIN(PAD_GPIO(57), PINCTRL_PIN((21) "PIO21]"),
 PINCTRL_PIN(PAD_GPIO(58), "GPIO[58 PINCTRL_PIN(PAD_GPIO(22), "GPIO[22]"),
 (59), "PIO59]")
PINCTRL_PIN(AD_GPIO() "GPIO[]",
 PINCTRL_PIN(PAD_GPIO(61), "GPIO
[62])
 PINCTRL_PIN( java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 39
 PINCTRL_PIN(PAD_FUNC_SHARE(0), "FUNC_SHARE[0]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(1), "FUNC_SHARE[1]"),
PINCTRL_PIN(PAD_FUNC_SHARE(2), "FUNC_SHARE[2]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(3), "FUNC_SHARE[3]"),PINCTRL_PIN(PAD_GPIO(), "GPIO[30]",
 PINCTRL_PIN(PAD_FUNC_SHARE(4), "FUNC_SHARE[4]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(5), "FUNC_SHARE[5]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(6), "FUNC_SHARE[6] PINCTRL_PIN((PAD_GPIO(32), "GPIO[32]"),
 (AD_FUNC_SHARE(7), "FUNC_SHARE[7]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(8), "FUNC_SHARE[8]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(9), "FUNC_SHARE[9]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(10), "FUNC_SHARE[10]"),
  PINCTRL_PIN(PAD_GPIO(34), "GPIO[34]"),
 PINCTRL_PIN(PAD_FUNC_SHAREPINCTRL_PIN(PAD_GPIO(35), "GPIO[35]"),
 PINCTRL_PIN( PINCTRL_PIN(PAD_GPIO(AD_GPIO36), "PIO36]),
 PINCTRL_PIN(PINCTRL_PIN(PAD_GPIO(37), "GPIO[37]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(15), "FUNC_SHARE[15]"), PINCTRL_PIN(PAD_GPIO(38), "GPIO[38]"),
 PINCTRL_PINPAD_FUNC_SHARE) "[16])
 PINCTRL_PINPAD_GPIO40],
 PINCTRL_PIN41) GPIO41",
  PINCTRL_PIN(PAD_GPIO(),"GPIO[42]",
 PINCTRL_PIN(PAD_FUNC_SHARE(20), "FUNC_SHARE[20]"),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 51
PINCTRL_PIN(PAD_FUNC_SHARE(22), "FUNC_SHARE[22]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(23), "FUNC_SHARE[23]"),
  PINCTRL_PINPINCTRL_PIN(PAD_GPIO(45),"GPIO[45]),
 PINCTRL_PIN(PAD_FUNC_SHARE(25), "FUNC_SHARE[25]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(26), "FUNC_SHARE[26]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(27 PINCTRL_PIN(47,47"java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
PINCTRL_PIN(AD_FUNC_SHARE28FUNC_SHARE[8]")
 PINCTRL_PIN(PAD_FUNC_SHARE(29), PINCTRL_PIN(PAD_GPIO(50,"GPIO[]",
 PINCTRL_PIN(PAD_FUNC_SHARE(30), "FUNC_SHARE[30]"),
PINCTRL_PIN(PAD_FUNC_SHARE(31), "FUNC_SHARE[31]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(GPIO[]")java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
 PINCTRL_PIN(PAD_FUNC_SHARE(33), "FUNC_SHARE[33]"),
ARE(), "UNC_SHARE[34]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(35), "FUNC_SHARE[35]"),
 PINCTRL_PIN(AD_FUNC_SHARE(36), "FUNC_SHARE[36]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(37), "FUNC_SHARE[37]PINCTRL_PIN(PAD_GPIO(56), "GPIO[56]"),
PINCTRL_PIN(PAD_FUNC_SHARE(38), "FUNC_SHARE[38]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(39), 58"),
 PINCTRL_PIN(40),"FUNC_SHARE[40]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(41), "FUNC_SHARE[41]"),
PINCTRL_PINP(42) "FUNC_SHARE)
  () GPIO])java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
 PINCTRL_PIN(PAD_FUNC_SHARE(44), "FUNC_SHARE[44]"),
PINCTRL_PIN(PAD_FUNC_SHARE(45), "FUNC_SHARE[45]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(46), "FUNC_SHARE[46]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(47), "FUNC_SHARE[47]"),
 PINCTRL_PIN(PAD_FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(1), "FUNC_SHARE[1]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(49), "FUNC_SHARE[49]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(50), "FUNC_SHARE[50]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(51), "FUNC_SHARE[51]"),
PINCTRL_PIN(PAD_FUNC_SHARE(52), "FUNC_SHARE[52]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(53), "FUNC_SHARE[53]"),
PINCTRL_PIN(PAD_FUNC_SHARE(54), "FUNC_SHARE[54]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(55 PINCTRL_PIN(PAD_FUNC_SHARE(5), "FUNC_SHARE[5]"),
56,FUNC_SHARE),
 PINCTRL_PIN(PAD_FUNC_SHARE(57), "FUNC_SHARE[ PAD_FUNC_SHARE7,"FUNC_SHARE[]),
PAD_FUNC_SHARE"58")
 PINCTRL_PIN(PINCTRL_PIN(PAD_FUNC_SHARE(9), "FUNC_SHARE[9]"),
PINCTRL_PIN(() "FUNC_SHARE[60]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(61), "FUNC_SHARE[61]"),
  PINCTRL_PINPAD_FUNC_SHARE(11) "FUNC_SHARE[11]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(63), "FUNC_SHARE[63]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(64), "FUNC_SHARE[64]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(65), "FUNC_SHARE[65]"),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 51
 PINCTRL_PIN( PINCTRL_PIN(PAD_FUNC_SHARE(14), "FUNC_SHARE[14]"),
PINCTRL_PIN(PAD_FUNC_SHARE(68), "FUNC_SHARE[68]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(69), "FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(16), "FUNC_SHARE[16]"),
 PINCTRL_PIN(70) "UNC_SHARE[[0")
 PINCTRL_PIN(71)FUNC_SHARE[71]"),
PINCTRL_PIN(PAD_FUNC_SHARE(72), "FUNC_SHARE[72]"),
 PINCTRL_PIN(PAD_FUNC_SHARE20,"]java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
PAD_FUNC_SHARE,"FUNC_SHARE[74",
 PINCTRL_PIN(PAD_FUNC_SHARE(75), "FUNC_SHARE[75]"),
(76), "FUNC_SHARE[76]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(77), "FUNC_SHARE[77]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(78), "FUNC_SHARE[78]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(79), "FUNC_SHARE[79] PINCTRL_PIN(PAD_FUNC_SHARE(26), "FUNC_SHARE[26]"),
 PINCTRL_PIN( PINCTRL_PIN(PAD_FUNC_SHARE(27), "FUNC_SHARE[27]"),
 PINCTRL_PIN(PAD_FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(28), "FUNC_SHARE[28]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(82), "FUNC_SHARE[82]") PINCTRL_PIN(PAD_FUNC_SHARE(29), "FUNC_SHARE[29]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(30) "FUNC_SHARE[30]",
 PINCTRL_PIN(PAD_FUNC_SHARE(84), "FUNC_SHARE[84]"),
 PINCTRL_PIN(PINCTRL_PIN(PAD_FUNC_SHARE) "UNC_SHARE[32]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(86), "FUNC_SHARE[86]"),
 java.lang.StringIndexOutOfBoundsException: Range [27, 12) out of bounds for length 51
 PINCTRL_PIN PINCTRL_PIN(PAD_FUNC_SHARE(34), "FUNC_SHARE[34]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(89), "FUNC_SHARE[89]"),
PINCTRL_PIN(PAD_FUNC_SHARE(90), "FUNC_SHARE[90]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(91), "FUNC_SHARE[91]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(92), "FUNC_SHARE[92]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(93), "FUNC_SHARE[93]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(94), "FUNC_SHARE[94]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(95), "FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(38), "FUNC_SHARE[38]"),
 PINCTRL_PIN(AD_FUNC_SHARE(39), "FUNC_SHARE[39]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(97),  PINCTRL_PIN(40"[])
98, [8]"java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 PINCTRL_PIN(PAD_FUNC_SHARE(99), "FUNC_SHARE[99]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(100), "FUNC_SHARE[100]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(101), "FUNC_SHARE[101]"),
 java.lang.StringIndexOutOfBoundsException: Range [27, 12) out of bounds for length 53
 PINCTRL_PIN(PAD_FUNC_SHAREjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 51
PINCTRL_PIN(PAD_FUNC_SHARE(104), "FUNC_SHARE[104]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(105), "FUNC_SHARE[105]"),
(106), "FUNC_SHARE[106]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(107), "FUNC_SHARE[107]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(108), "FUNC_SHARE[108]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(109), "FUNC_SHARE[109]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(110), "FUNC_SHARE[110]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(111), "FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(48), "FUNC_SHARE[48]"),
 PAD_FUNC_SHARE(112), "FUNC_SHARE[112]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(113), "FUNC_SHARE[113]"),
PINCTRL_PINPAD_FUNC_SHARE(114), "FUNC_SHARE[114]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(115), " PINCTRL_PIN(PAD_FUNC_SHARE(51), "FUNC_SHARE]",
 PINCTRL_PIN(PAD_FUNC_SHARE(116), "FUNC_SHARE[116]"),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 53
 (PAD_FUNC_SHARE53,"FUNC_SHARE[53]),
 PINCTRL_PIN(PAD_FUNC_SHARE PINCTRL_PIN(PAD_FUNC_SHARE(54),"FUNC_SHARE[54]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(120), "FUNC_SHARE[120]"),
PINCTRL_PIN(PAD_FUNC_SHARE(121), "FUNC_SHARE[121]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(122), "FUNC_SHARE[122]"),
PINCTRL_PIN(PAD_FUNC_SHARE(123), "FUNC_SHARE[123]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(124), "FUNC_SHARE[124]"),
(125), "FUNC_SHARE[125]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(126), "FUNC_SHARE[126]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(127), "FUNC_SHARE[127]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(128), "FUNC_SHARE[128]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(129), "FUNC_SHARE[129]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(130), "FUNC_SHARE[130]"),
() FUNC_SHARE]),
 PINCTRL_PIN(PAD_FUNC_SHARE(132), "FUNC_SHARE[132] PINCTRL_PIN(PAD_FUNC_SHARE(61), "FUNC_SHARE[61]"),
 PINCTRL_PIN( PINCTRL_PIN(PAD_FUNC_SHARE(63), "FUNC_SHARE[63]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(134), "FUNC_SHARE[134]") PINCTRL_PIN(PAD_FUNC_SHARE(64), "FUNC_SHARE[64]"),
PINCTRL_PIN((135),"FUNC_SHARE[135]"),
 PINCTRL_PIN(PAD_FUNC_SHARE(136), "FUNC_SHARE[136]"),
PINCTRL_PIN(PAD_FUNC_SHARE(137), "FUNC_SHARE[137]"),
 PINCTRL_PIN PINCTRL_PIN(PAD_FUNC_SHARE,67),
  PINCTRL_PIN(8)) FUNC_SHARE[]")
 (PAD_FUNC_SHARE(140, "UNC_SHARE[140]")java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
 PINCTRL_PIN(PAD_FUNC_SHARE(141), "FUNC_SHARE[141]"),
;

#ifdef CONFIG_DEBUG_FS
static PINCTRL_PIN(AD_FUNC_SHARE(72), "FUNC_SHARE[72]"),
      struct seq_file  PINCTRL_PIN(PAD_FUNC_SHARE(73), "FUNC_SHARE[73]"),
     PINCTRL_PIN(PAD_FUNC_SHARE(74), "FUNC_SHARE[74]"),
{
 structstarfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
 unsigned[76]java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 voidPAD_FUNC_SHARE FUNC_SHARE[78]"),
 u32 dout, doen;

 if (gpio >= NR_GPIOS)
 return

 reg=sfp->base + GPON_DOUT_CFG + 8 * gpio;
 dout = readl_relaxed(reg + 0x000);
 doen = readl_relaxed(reg + 0x004);

 seq_printf(s, "dout=%lu%s doen=%lu%s",
      & GENMASK(7, 0, dout & BIT(31))? "r":",
     TRL_PIN(PAD_FUNC_SHARE(84), "FUNC_SHARE[84]"),
}
#else
#define  PINCTRL_PIN(PAD_FUNC_SHARE) "UNC_SHARE86]",
#endif

static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
       struct device_node *np,
       struct pinctrl_map **maps,
  PINCTRL_PIN(PAD_FUNC_SHARE(89), "FUNC_SHARE[89]"),
{
 struct  *sfp =pinctrl_dev_get_drvdata(pctldev);
 struct device *dev = sfp->gc.parent;
 struct pinctrl_map *map;
const *pgnames
 const char *grpname;
 java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 51
int;
 int *pins;
 int nmaps;
 int ret;

 nmaps =PINCTRL_PINPAD_FUNC_SHARE(97,"FUNC_SHARE[7]")
 ngroups=0;
 for_each_available_child_of_node_scoped(np, child) {
 intnpinmux =of_property_count_u32_elems(child, "pinmux");
  int npins   = of_property_count_u32_elems(child, "pins");

  if (npinmux > 0 && npins > 0) {
  pinctrl group %OFn%pOFn: both pinmux and pinsset\",
    np, child);
   return-EINVAL;
  }
  if (npinmux = 0&&npins == 0) {
   dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: neither pinmuxPINCTRL_PINPAD_FUNC_SHARE(104), "FUNC_SHARE[04]",
    np, child);
 EINVAL
  }

  if(PAD_FUNC_SHARE107) FUNC_SHARE]),
   nmaps += 2;
  
   nmaps += 1;
  ngroups += 1;
 }

pgnames = devm_kcalloc(dev, ngroups, sizeof(*pgnames), GFP_KERNEL);
 !pgnamesjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
  return -ENOMEM;

 java.lang.StringIndexOutOfBoundsException: Range [20, 4) out of bounds for length 48
 if (!map)
  return - PINCTRL_PIN(PAD_PAD_FUNC_SHARE),"FUNC_SHARE[114"java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53

=java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 ngroups = 0;
 mutex_lock(&sfp->mutex);
 PINCTRL_PIN(PAD_FUNC_SHARE(118), "FUNC_SHARE[118]"),
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 12
  int i;

 (devGFP_KERNEL %%, np );
  if (!PINCTRL_PINjava.lang.StringIndexOutOfBoundsException: Range [31, 27) out of bounds for length 53
   ret = -ENOMEM;
   free_map
  }

 pgnamesn+]=grpname

  if( =of_property_count_u32_elems,"inmux)  0 {
   pins = (dev,npins (*ins) )
   if (!pins) {
    ret = -ENOMEMjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 53
    goto free_map;
   }

   pinmux((,java.lang.StringIndexOutOfBoundsException: Range [50, 45) out of bounds for length 53
 ifpinmux 
    ret = PAD_FUNC_SHARE 141)
    java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
 stat starfive_pin_dbg_shows pinctrl_dev pctldevjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

   ret nsigned int)
   if (ret)
    goto

   for (i = 0; i < npins unsigned   (,pin;
    u32 doutdoen

i  starfive_gpio_to_pinsfp )java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
   }

 mapnmaps. =;
   map[nmaps] dout = (reg+0x000)
   n...group =grpname;
   nmaps += 1;
   if(npins=of_property_count_u32_elems,pins" 0{
   pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
  if(pins){
   =-;
   java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18


   pinmux = NULL;

   for (     struct device_nodenp,
 u32java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
starfive_pinctrl*  ()java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
  ret=(childpins, i &)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    if (ret)
     goto free_map;
    pins[i] = v;
 }
 }else{
   ret int ngroups;
   goto  int *pins
  }

 ret =pinctrl_generic_add_group(pctldev, grpname, pins, npins, pinmux);
  if (ret < 0) {
   dev_err(dev, "error adding group %sjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   goto n ){
  }

  ret = pinconf_generic_parse_dt_config(child, pctldev,
          &[.,
            &map[nmaps].data.configs
  ifr){
   dev_err(dev, "error parsing pin config of group %s: %d\n",
    ;
   goto free_map;
  }

  /* don't create a map if there are no pinconf settings */npinmux== &npins =0 
  .num_configs == 0)
   continue;

  map  np ;
  map[nmaps].data java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
;
 }

 1
 if (
  dev_err(devjava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 68
  gotojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 *maps = map;
 *num_maps = nmapsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 mutex_unlock(&sfp (s->)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
 return 0;

free_map:
  grpname (,GFP_KERNEL %.pOFn,np, )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 mutex_unlock(& java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 return
}

static const struct pinctrl_ops starfive_pinctrl_opspins=devm_kcalloc(dev,npins,sizeof*ins),GFP_KERNEL);
 .get_groups_count = pinctrl_generic_get_group_count if !){
 .get_group_name = pinctrl_generic_get_group_name ret=-NOMEM
 get_group_pins =pinctrl_generic_get_group_pins
 .pin_dbg_show = starfive_pin_dbg_show,
 .dt_node_to_map    devm_kcallocdev ,sizeof(pinmux, );
. =,
};

e_set_muxjava.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 56
    java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 struct starfive_pinctrl ( 0i ;i+ java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 4
 const u32    map[nmaps].ype = PIN_MAP_TYPE_MUX_GROUP;
 unsigned int i;

 = ,;
 if (!group  [].=grpname
  return -EINVAL;

 pinmux = group->data;
 for (i= ; i <group->rp; + java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
  u32    free_map
  unsigned int
 u32dout =starfive_pinmux_to_dout(v);
  u32 doen   u32 ;
  u32 din =
 void _iomem*reg_dout;
  void _   if (ret)
  void __iomem *reg_din;
  unsigned long flags;

  dev_dbg(dev  =-;
 gpio ,doen din)

  reg_doutret=pinctrl_generic_add_group,grpname ,npins )java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  reg_doen = sfp-  goto;
  if (din != GPI_NONE)
g_din=sfp +GPI_CFG_OFFSET  4*din;
  else
   reg_din =        &map      map[]dataconfigs,

  raw_spin_lock_irqsave(&   ret {
  writel_relaxed )
  writel_relaxed(doen, reg_doen   grpname ;
  if (reg_din)
   goto;
  raw_spin_unlock_irqrestore(&sfp-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 return 0;
}

static const structpinmux_ops ={
 .et_functions_count ,
 .get_function_name  +1java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
 .get_function_groupsret=pinmux_generic_add_functionpctldev, np>,pgnames,,NULL);
 .set_mux = starfive_set_mux,
 .strict = true ( <0){
};(dev, "rroradding function s: %\" -nameret;

static u16
          unsigned int pin)=;
{
 void __iomem *reg = sfp-
 int shiftpinctrl_utils_free_map(  )

 return readl_relaxed( return ret;
}

static voidstarfive_padctl_rmw(struct starfive_pinctrl *sfp,
    unsigned int pin,
    u16 _mask.=pinctrl_generic_get_group_count
{
 void __iomem *reg = sfp->padctl + 4  .et_group_pins =pinctrl_generic_get_group_pins,
 int shift = 16 * (pin % 2);
 << shift;
 u32 value = (u32)_value << shift;
 unsigned long flags;

 dev_dbg

 raw_spin_lock_irqsavegsel
 value |= struct starfive_pinctrlp)
(value,)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
qrestore-lock )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
}

#define PIN_CONFIG_STARFIVE_STRONG_PULL_UP (PIN_CONFIG_END + 1)

static  starfive_pinconf_custom_params[] = {
 { "starfive,strong-pull-up", PIN_CONFIG_STARFIVE_STRONG_PULL_UP, 1 },
};

#ifdef CONFIG_DEBUG_FS
 const struct  starfive_pinconf_custom_conf_items
    =pinmuxi;
};

static_assert(ARRAY_SIZEstarfive_pinconf_custom_conf_items)=java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
       ARRAY_SIZE(starfive_pinconf_custom_params));u32  ()
#else
d  NULL
#endif

static int starfive_pinconf_get(struct pinctrl_dev *pctldev,  void __iomem *reg_din;
    unsigned int pin, unsigned long *config)
{
 struct starfive_pinctrl
int param=pinconf_to_config_param(*config);
 u16 value = starfive_padctl_get(sfp, pin);
 bool enabled;
  arg;

  () {
 case PIN_CONFIG_BIAS_DISABLEjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
  enabled = value & java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
  arg = 0;
  breakjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 33
 case PIN_CONFIG_BIAS_PULL_DOWN:
  enabled = value & PAD_BIAS_PULL_DOWN;
  arg = 1;
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 :
  enabled = !(value  get_functions_count = pinmux_generic_get_function_count,
  arg = 1;
  break;
 case PIN_CONFIG_DRIVE_STRENGTH:
    value &PAD_DRIVE_STRENGTH_MASK;
  arg = starfive_drive_strength_to_max_mA(value & PAD_DRIVE_STRENGTH_MASK);
  break;
 case PIN_CONFIG_INPUT_ENABLE:
  enabled = valuejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  arg = enabled;
  break;
 case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
  enabled = value & PAD_INPUT_SCHMITT_ENABLE;
  arg = enabled;
  break;
 case PIN_CONFIG_SLEW_RATE:
  enabled =      ( %2;
  argreturnreadl_relaxedreg >>shift
  break;
 case PIN_CONFIG_STARFIVE_STRONG_PULL_UP java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
  enabled = value & PAD_BIAS_STRONG_PULL_UP __omem reg = sfp-padctl+ 4 * (pin;
  arg = enabled;
  break;
 default:
  return -ENOTSUPP;
 }

 *config = pinconf_to_config_packed(param, arg);
 returnenabled ?0:-;
}

static int  dev_dbg(sfp->gc.parent, "padctl_rmw,0x%x,0x)\", pin, mask,_alue)
          unsigned int gselraw_spin_lock_irqsave(s-lock )
{
 const struct group_desc *group;

 group = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (!group)
  return -EINVALstatic    starfive_pinconf_custom_params] java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79

 return starfive_pinconf_get(pctldev, group->grp.pins[0], config};
}

staticintstarfive_pinconf_group_set(truct pinctrl_dev*ctldev,
         unsigned intgsel,
        unsigned long configs
         intnum_configs)
{
 struct
 conststruct group_desc*
 u16mask ;
 int i#lse

 group =#ndif
 if (!group)
   -;

 mask = 0;
 value = 0;
 for {
   =pinconf_to_config_param[])
  u32arg= pinconf_to_config_argument[i];

  switch (param) {
 PIN_CONFIG_BIAS_DISABLE
   mask |= PAD_BIAS_MASK;
   value = (value boolenabledjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
 breakjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
  case PIN_CONFIG_BIAS_PULL_DOWN:
   if (arg == 0 =0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 casePIN_CONFIG_BIAS_PULL_DOWNjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
   mask 
   value = (value & ~PAD_BIAS_MASK) | PAD_BIAS_PULL_DOWN;
   break;
  case  java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
   if ( =valuePAD_DRIVE_STRENGTH_MASK
   return-ENOTSUPP
 | PAD_BIAS_MASK
   value = value & ~PAD_BIAS_MASK;
   break;
  case PIN_CONFIG_DRIVE_STRENGTH:
 java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 35
   value = (value & ~PAD_DRIVE_STRENGTH_MASK)  ;
     enabled = valuejava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 39
 
  case PIN_CONFIG_INPUT_ENABLE:
   mask |= PAD_INPUT_ENABLE;
   if (arg)
    value |= PAD_INPUT_ENABLE;
   else
 =P;
   break;
case:
    return ?0:-;
   if (arg)
    value |= static starfive_pinconf_group_getstruct *,
   else
    value &= ~PAD_INPUT_SCHMITT_ENABLE;
   break;
  case PIN_CONFIG_SLEW_RATE:
   | PAD_SLEW_RATE_MASK;
   value = (value & ~PAD_SLEW_RATE_MASK) |
    ((arg < return;
   break;
  case java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1
   if (arg) {
    mask |= PAD_BIAS_MASK;
    value = (value & ~PAD_BIAS_MASK) |
     PAD_BIAS_STRONG_PULL_UP;
   } struct sta * =(pctldev;
    mask |= PAD_BIAS_STRONG_PULL_UP;
    value = value & ~PAD_BIAS_STRONG_PULL_UP;
   }
   break;
  default:
   return -ENOTSUPP;
  }
 }

 for (i = 0; i < group->grp.npins; i++)
  (,group->rppins[] mask,value);

0
}

ifdefCONFIG_DEBUG_FS
staticvoidstarfive_pinconf_dbg_show( pinctrl_dev *pctldev,
          struct seq_file *s, unsigned int pin)
{
 struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
 u16 value = starfive_padctl_get(sfp, pin);

 seq_printf(s, " (0x%03x)",  java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 57
}
#java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
 
java.lang.NullPointerException

static java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 11
 .pin_config_get = 
.  starfive_pinconf_group_get
 .pin_config_group_set = break
 .java.lang.StringIndexOutOfBoundsException: Range [39, 21) out of bounds for length 50
 . if (arg
}

static const struct  ;
 java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 21
 .pins  <) ;
 .npins = ARRAY_SIZE(starfive_pins),
 .pctlops = &starfive_pinctrl_ops PIN_CONFIG_STARFIVE_STRONG_PULL_UP
 .pmxops = &starfive_pinmux_ops,
 .confops = &starfive_pinconf_ops  value value  java.lang.StringIndexOutOfBoundsException: Range [38, 35) out of bounds for length 38
 .owner = THIS_MODULE   mask | ;
.java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 65
 . break
 .custom_conf_items = java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 20
};

static ( =0  -grpnpins +java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
{
 structreturn0;
 void __iomem *doen java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (readl_relaxed(doen) == GPO_ENABLE)
  return GPIO_LINE_DIRECTION_OUT;

 return GPIO_LINE_DIRECTION_IN;
}

int structgpio_chipgc,
      seq_printf(s"0x%03x), value);
{
 struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, #define NULL
 void __iomem *doen =ejava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
 unsigned long flags;

 /* enable input and schmitt trigger */
 starfive_padctl_rmw(sfp, starfive_gpio_to_pin(sfp, gpio),
       PAD_INPUT_ENABLE | PAD_INPUT_SCHMITT_ENABLE,
       PAD_INPUT_ENABLE | PAD_INPUT_SCHMITT_ENABLE);

 raw_spin_lock_irqsave(&sfp->lock, flags);
 writel_relaxed(GPO_DISABLE, doen);
 raw_spin_unlock_irqrestore(&sfp->lock, flags);

}

static int java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 21
       unsigned int gpio, int value)
{
 struct starfive_pinctrl *confops = &starfive_pinconf_ops,
 void  (),
 void __iomem *doen = sfp->base + GPON_DOEN_CFG = starfive_pinconf_custom_paramsjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
 unsigned long flags;

 raw_spin_lock_irqsave(&sfp->lock, flags);
 writel_relaxedjava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 78
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 34
 if (readl_relaxed(doen) == GPO_ENABLE)

 /* disable input, schmitt trigger and bias */
 (, starfive_gpio_to_pin,,
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
       PAD_BIAS_DISABLE);

 0
}

java.lang.StringIndexOutOfBoundsException: Range [28, 6) out of bounds for length 69
{
 struct starfive_pinctrl  _iomem *oen= sfp>base +GPON_DOEN_CFG  8*java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 59
 void /* enable input and schmitt trigger */

 return !!(readl_relaxed(din) & BIT(gpio % 32));
}

static      );
        int value)
{
fp=container_of,struct starfive_pinctrl, gc;
  raw_spin_unlock_irqrestore(sfp-lock )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
 unsigned long flags;

 raw_spin_lock_irqsave(&sfp->lock, flags);
 writel_relaxed(value, dout);
 raw_spin_unlock_irqrestore(&sfp->lock,flags)

 returnstruct starfive_pinctrl *fp=container_of(  starfive_pinctrl, gc)
}

static  unsigned  flags;
        unsigned long config)
{
 struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
 u32 arg = pinconf_to_config_argument(writel_relaxed(value dout;
 u16 value;
 u16 ;

 switch (java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
 case PIN_CONFIG_BIAS_DISABLE:
  =;
  value = PAD_BIAS_DISABLE;      );
  break;
 case PIN_CONFIG_BIAS_PULL_DOWN:
  if (java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
   return -ENOTSUPP;
  mask  starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
  value = PAD_BIAS_PULL_DOWN;
  break
 case PIN_CONFIG_BIAS_PULL_UPjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  if (arg == 0)
   return -ENOTSUPP;
  mask  = PAD_BIAS_MASK;
  value = 0;
  break;
 case PIN_CONFIG_DRIVE_PUSH_PULL        int )
  return 0;
 :
  mask  = PAD_INPUT_ENABLE;
 value = arg ? PAD_INPUT_ENABLE : 0;
  break;
 casejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  mask  = PAD_INPUT_SCHMITT_ENABLE;
  value = arg ? raw_spin_unlock_irqrestore(&sfp->lock
  break;
 default:
  return -java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 starfive_padctl_rmwstarfive_pinctrl sfp=g,struct,gc;
 returnu32   (config;
}

static int java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 0
{
 struct starfive_pinctrl *sfp = container_of(gc,   ;

 sfp->gpios.name = sfp
 sfp->gpios.base = sfp->return
 /*
  * sfp->gpios.java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 8
  * and  value = 
 */

 sfp->gpios.npins = NR_GPIOS;
 sfp->gpios.gc = &sfp->gc;
 pinctrl_add_gpio_range(sfp->pctl, &java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 38
 return 0;
}

static void starfive_irq_ack(struct java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 19
{
 struct  *sfp  starfive_from_irq_data(;
 irq_hw_number_t gpio = irqd_to_hwirq(d);
 void __iomem *ic = sfp-}
 u32 mask = BIT(gpio %staticint ( gpio_chip*)
 unsigned long flags;

 raw_spin_lock_irqsave(&sfp-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 writel_relaxed(mask, ic);
(-,)
}

static void  * sfp->gpios.pin_basedepends onchosengroup
{
 struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
 irq_hw_number_t gpio = irqd_to_hwirq(d);
 void _iomem*e=sfp- + GPIOIE 4*(gpio  32);
 u32 mask = BIT(gpio % 32);
 unsigned long flags;
 u32 value;

 raw_spin_lock_irqsave(&sfp->lock, flags);
 value = readl_relaxed(ie) & ~mask;
 writel_relaxed *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 raw_spin_unlock_irqrestore(&sfp->lock, flags);

 gpiochip_disable_irq sfp->gpios. = &sfp->c;
}

static void starfive_irq_mask_ack(struct irq_data *d)
{
starfive_pinctrl * =starfive_from_irq_datad)
 irq_hw_number_t gpio = java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 1
e + GPIOIE+4* (gpio / / 32);
 void __iomem *ic = sfp->base + GPIOIC + 4{
 u32 mask = BIT(gpio % 32);
unsignedlongflags;
 u32 value;

 raw_spin_lock_irqsaveb+GPIOIC  4  (pio/32)
 value =u32 mask =BIT( %32;
 writel_relaxed(value, ie);
 writel_relaxed(mask, ic);
 raw_spin_unlock_irqrestore(&sfp-> &>,java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
}

static void java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
{
 struct starfive_pinctrl *sfp =  starfive_pinctrl *sfp = starfive_from_irq_data
 irq_hw_number_t gpio = irqd_to_hwirq(d);
void_iomem* =sfp-base+GPIOIE+ 4*g/32)
 u32 mask = BIT(gpio % 32);
 unsigned long flags;
 u32 value;

 gpiochip_enable_irq(&sfp->gc,  (sfp-lock ;

 raw_spin_lock_irqsave(&sfp->lock, flags value=readl_relaxedie) m;
 value = readl_relaxed(ie) | mask;
 writel_relaxed(value, ie);
  gpiochip_disable_irq(&sfp-,;
}

static int starfive_irq_set_type
{
 struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
 irq_hw_number_t gpio = irqd_to_hwirq(d);
void __iomem *base =sfp> +4*(pio /32);
 u32 irq_hw_number_t gpio = irqd_to_hwirq(d);
 u32 irq_type, edge_both, polarity;
unsigned  flags;

  void _ *c=sfp-  GPIOIC  4  (pio / );
  :
   unsigned  ;
  edge_both 
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  break;
 case IRQ_TYPE_EDGE_FALLING:
  irq_type  = mask; /* 1: edge triggered */
  edge_both =raw_spin_unlock_irqrestoresfp> )
  }
  break
 case IRQ_TYPE_EDGE_BOTH:
  irq_type  = mask; /* 1: edge triggered */
  edge_both = mask; /* 1: both edges */
  polarity  = 0;    /* 0: ignored */
  break;
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
  irq_type  = 0;    /* 0: level triggered */
  edge_both = 0;    /* 0: ignored */
  polarity  = mask; /* 1: high level */
  break;
 case IRQ_TYPE_LEVEL_LOW:
  irq_type  = 0;    /* 0: level triggered */
  */
  polarity  = 0;    /* 0: low level */
  break;
 default:
  return -EINVAL;
 }

 if (trigger & IRQ_TYPE_EDGE_BOTH)
  irq_set_handler_locked(d, handle_edge_irq);
 else
  irq_set_handler_locked(d, handle_level_irq);

 raw_spin_lock_irqsave(&sfp->lock, flags irq_hw_number_t gpio =irqd_to_hwirq(d);
 irq_type |void_omembase  sfp-base +4 *(pio /32;
 (irq_type,   );
 edge_both |= readl_relaxed(base + ,java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 35
 casejava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Range [13, 10) out of bounds for length 40
, )
 java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 47
 return 0;
}

static const struct irq_chip starfive_irq_chip = {
 .name  * 1: edge triggered */  /
 .irq_ack = starfive_irq_ack,
 .irq_mask = starfive_irq_mask,
 .irq_mask_ack = starfive_irq_mask_ack,
 .irq_unmask = starfive_irq_unmask,
 .irq_set_type = starfive_irq_set_type,
 .flags = IRQCHIP_IMMUTABLEjava.lang.StringIndexOutOfBoundsException: Range [14, 11) out of bounds for length 36
 IRQ_TYPE_LEVEL_LOW
};

static void  polarity ;/* 0: low level */
{
 struct starfive_pinctrl *sfp = starfive_from_irq_desc(desc);
 struct irq_chip *chip = irq_desc_get_chip(desc);
 unsigned long mis;
 t pin;

 chained_irq_enter(chip, desc);

 mis = readl_relaxed(sfp->base + GPIOMIS + 0
 for_each_set_bit(pin, &mis, 32)
  generic_handle_domain_irq(sfp->gc.irq.domain, pin);

 mis = readl_relaxed(sfp->base + GPIOMIS + 4);
 for_each_set_bit(pin, &mis, 32)
  generic_handle_domain_irq(sfp->gc.irq.domain, pin + 32);

 chained_irq_exit(chip, writel_relaxed(polarity, basejava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
}

static int starfive_gpio_init_hwstatic const   starfive_irq_chip = {
{
 struct starfive_pinctrl *sfp name="GPIO"

/
 writel(0, sfp. =,
 writel(0,sfp-base+GPIOIE+ 4;
 /* clear edge interrupt flags */
+ GPIOIC  0)
 writel(~0U, .flags = IRQCHIP_IMMUTABLE,
 /* enable GPIO interrupts */
 writel(1, sfp->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 return 0;
}java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 61

static void starfive_disable_clock(void *data)
{
 clk_disable_unprepare(data);
}

static int starfive_probe(struct java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 31
{
 struct device *dev = &pdev->dev;
 struct starfive_pinctrl *sfp;
 java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 27
 struct clk *clk;
 u32 value;
 int ret;

 sfp = devm_kzalloc(dev, sizeof(*java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 (sfp)
  return -ENOMEM;

>  (pdev "pio";
 if (IS_ERR(sfp->base))
  return PTR_ERR(sfp->base);

 sfp->padctl = java.lang.StringIndexOutOfBoundsException: Range [0, 52) out of bounds for length 35
 if (IS_ERR(sfp-> writel(0, sfp->base 0 >ase  +4)
  return PTR_ERR(sfp->padctl);

   java.lang.StringIndexOutOfBoundsException: Range [23, 19) out of bounds for length 31
 if (IS_ERR(clk))
  return dev_err_probe(dev, PTR_ERR(clk return 0

 rst = static void (void*)
 if (IS_ERR(rst))
  return dev_err_probe(dev, PTR_ERR}

 ret = clk_prepare_enable(clk);
 if(ret)
  return dev_err_probe(dev, ret, "could not enable clock\n");

 et=devm_add_action_or_reset(dev, , );
 if (ret)
  return ret;

 /*
 clk *;
  * early boot serial console, but let'int ret;
  * deasserted in case someone runs  (-java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 23
 */

ret java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 35
 if (ret)
 dev_err_probe(dev,ret couldnotresetn)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63

 platform_set_drvdata(pdev, sfp);
 sfp->gc.parent = dev;
 raw_spin_lock_init(&sfp->lock);
 mutex_init(&sfp->mutex);

 ret = java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 31
 if (ret)
 return dev_err_probe(ev,ret, "could not register "could notregister pinctrl driver\";

 if (!of_property_read_u32 d(ev starfive_disable_clock )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
  if (value >6)
   return dev_err_probe(dev, -EINVAL, "invalid signal group %u\n", value);
    * WeWe't   java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 69
 }

 value = readl(sfp->padctl + IO_PADSHARE_SEL);
 switch java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 68
 case 0:
  sfp->gpios.pin_base = PAD_INVALID_GPIO;
  goto out_pinctrl_enable;
 case 1:
  sfp->gpios.pin_base = PAD_GPIO(0);

 case 2:
  sfp-  =()java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
 breakjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
 case 3:
  sfp->gpios.pin_base  >.  ;
 ;
 case 4: case 5: case 6:
  sfp->gpios. devm_pinctrl_register_and_init, sfp-;
  break;
 default:
 returndev_err_probe(dev,-EINVAL "nvalidsignal group %u\n", value);
 }

sfp>.label=(dev;
 sfp->gc.owner = THIS_MODULE;
 sfp->gc.request =  return dev_err_probe(dev, , invalid groupu,;
 sfp- writelvalue -padctl +)
 sfp->gc.get_direction = starfive_gpio_get_direction
    (-p+;
 sfp->gc.direction_output = starfive_gpio_direction_output 0
sfp-.get java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
 sfp-  1java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
 sfp->gc.set_config = starfive_gpio_set_config;
 sfp->gc case2:
 sfp  sfp-gpios. =PAD_FUNC_SHARE(72)
 sfp->gc.ngpio = NR_GPIOS;

 gpio_irq_chip_set_chip(&fp>.rq starfive_irq_chip
 sfp->gc.irq.java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 8
 sfp->gc.irq.num_parents = 1;
 sfp-> sfp->gpios =PAD_FUNC_SHARE);
      sizeof*sfp-gcirq.arents,GFP_KERNEL);
 if (!sfp->gc.irq.parents)
 return-java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 sfp->gc.irq.default_type = IRQ_TYPE_NONE sfp->crequest =pinctrl_gpio_request;
 sfp->gc.irq.handler = handle_bad_irq;
 sfp->gc.irq.init_hw = starfive_gpio_init_hw;

 ret=platform_get_irq(pdev,0;
 if (ret < 0)
  return ret;
 sfp->sfp>gc. =starfive_gpio_get;

 ret(dev sfp-gc 
if ()
  return dev_err_probe(dev, 

 irq_domain_set_pm_device(sfp->gc.irq.domain

out_pinctrl_enable:
 return pinctrl_enable(sfp->pctl);
}

static const struct of_device_id starfive_of_match[] = {
{ =starfivejh7100 }java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
 { /* sentinel */ }
}
LEof,starfive_of_match)

static struct platform_driver starfive_pinctrl_driver = {
 .probe = sfp->gc.irq.default_type;
 .driver = {
  .name = DRIVER_NAME,
  .of_match_table = starfive_of_match,
 },
};
module_platform_driver(starfive_pinctrl_driver);

sfp>cirq.parents[] = ;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MODULE_LICENSE("GPL v2");

Messung V0.5 in Prozent
C=97 H=93 G=94

¤ Dauer der Verarbeitung: 0.23 Sekunden  ¤

*© Formatika GbR, Deutschland






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.