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


Quelle  pinctrl-aspeed.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2016 IBM Corp.
 */


#ifndef PINCTRL_ASPEED
#define PINCTRL_ASPEED

#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/pinctrl/pinconf.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/regmap.h>

#include "pinmux-aspeed.h"

/**
 * @param The pinconf parameter type
 * @pins The pin range this config struct covers, [low, high]
 * @reg The register housing the configuration bits
 * @mask The mask to select the bits of interest in @reg
 */

struct aspeed_pin_config {
 enum pin_config_param param;
 unsigned int pins[2];
 unsigned int reg;
 u32 mask;
};

#define ASPEED_PINCTRL_PIN(name_) \
 [name_] = { \
  .number = name_, \
  .name = #name_, \
  .drv_data = (void *) &(PIN_SYM(name_)) \
 }

#define ASPEED_SB_PINCONF(param_, pin0_, pin1_, reg_, bit_) { \
 .param = param_, \
 .pins = {pin0_, pin1_}, \
 .reg = reg_, \
 .mask = BIT_MASK(bit_) \
}

#define ASPEED_PULL_DOWN_PINCONF(pin_, reg_, bit_) \
 ASPEED_SB_PINCONF(PIN_CONFIG_BIAS_PULL_DOWN, pin_, pin_, reg_, bit_), \
 ASPEED_SB_PINCONF(PIN_CONFIG_BIAS_DISABLE,   pin_, pin_, reg_, bit_)

#define ASPEED_PULL_UP_PINCONF(pin_, reg_, bit_) \
 ASPEED_SB_PINCONF(PIN_CONFIG_BIAS_PULL_UP, pin_, pin_, reg_, bit_), \
 ASPEED_SB_PINCONF(PIN_CONFIG_BIAS_DISABLE, pin_, pin_, reg_, bit_)
/*
 * Aspeed pin configuration description.
 *
 * @param: pinconf configuration parameter
 * @arg: The supported argument for @param, or -1 if any value is supported
 * @val: The register value to write to configure @arg for @param
 * @mask: The bitfield mask for @val
 *
 * The map is to be used in conjunction with the configuration array supplied
 * by the driver implementation.
 */

struct aspeed_pin_config_map {
 enum pin_config_param param;
 s32 arg;
 u32 val;
 u32 mask;
};

struct aspeed_pinctrl_data {
 struct regmap *scu;

 const struct pinctrl_pin_desc *pins;
 const unsigned int npins;

 const struct aspeed_pin_config *configs;
 const unsigned int nconfigs;

 struct aspeed_pinmux_data pinmux;

 const struct aspeed_pin_config_map *confmaps;
 const unsigned int nconfmaps;
};

/* Aspeed pinctrl helpers */
int aspeed_pinctrl_get_groups_count(struct pinctrl_dev *pctldev);
const char *aspeed_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
  unsigned int group);
int aspeed_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
  unsigned int group, const unsigned int **pins,
  unsigned int *npins);
void aspeed_pinctrl_pin_dbg_show(struct pinctrl_dev *pctldev,
  struct seq_file *s, unsigned int offset);
int aspeed_pinmux_get_fn_count(struct pinctrl_dev *pctldev);
const char *aspeed_pinmux_get_fn_name(struct pinctrl_dev *pctldev,
  unsigned int function);
int aspeed_pinmux_get_fn_groups(struct pinctrl_dev *pctldev,
  unsigned int function, const char * const **groups,
  unsigned int * const num_groups);
int aspeed_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned int function,
  unsigned int group);
int aspeed_gpio_request_enable(struct pinctrl_dev *pctldev,
  struct pinctrl_gpio_range *range,
  unsigned int offset);
int aspeed_pinctrl_probe(struct platform_device *pdev,
  const struct pinctrl_desc *pdesc,
  struct aspeed_pinctrl_data *pdata);
int aspeed_pin_config_get(struct pinctrl_dev *pctldev, unsigned int offset,
  unsigned long *config);
int aspeed_pin_config_set(struct pinctrl_dev *pctldev, unsigned int offset,
  unsigned long *configs, unsigned int num_configs);
int aspeed_pin_config_group_get(struct pinctrl_dev *pctldev,
  unsigned int selector,
  unsigned long *config);
int aspeed_pin_config_group_set(struct pinctrl_dev *pctldev,
  unsigned int selector,
  unsigned long *configs,
  unsigned int num_configs);

#endif /* PINCTRL_ASPEED */

Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.12 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge