/* * Core driver for the pin control subsystem * * Copyright (C) 2011-2012 ST-Ericsson SA * Written on behalf of Linaro for ST-Ericsson * Based on bits of regulator core, gpio core and clk core * * Author: Linus Walleij <linus.walleij@linaro.org> * * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved. * * License terms: GNU General Public License (GPL) version 2 */#define pr_fmt(fmt) "pinctrl core: " fmt#include<linux/kernel.h>#include<linux/export.h>#include<linux/init.h>#include<linux/device.h>#include<linux/slab.h>#include<linux/err.h>#include<linux/list.h>#include<linux/sysfs.h>#include<linux/debugfs.h>#include<linux/seq_file.h>#include<linux/pinctrl/consumer.h>#include<linux/pinctrl/pinctrl.h>#include<linux/pinctrl/machine.h>#include"core.h"#include"devicetree.h"#include"pinmux.h"#include"pinconf.h"/** * struct pinctrl_maps - a list item containing part of the mapping table * @node: mapping table list node * @maps: array of mapping table entries * @num_maps: the number of entries in @maps */structpinctrl_maps{structlist_headnode;structpinctrl_mapconst*maps;unsignednum_maps;};staticboolpinctrl_dummy_state;/* Mutex taken by all entry points */DEFINE_MUTEX(pinctrl_mutex);/* Global list of pin control devices (struct pinctrl_dev) */LIST_HEAD(pinctrldev_list);/* List of pin controller handles (struct pinctrl) */static