linux/drivers/pinctrl/pinctrl-mxs.c
<<
on v14./spa 14./form 14.a on v14 href="../linux+v3.8.6/drivers/pinctrl/pinctrl-mxs.c">on v14.img src="../.static/gfx/right.png" alt=">>">on./spa on.spa class="lxr_search">on v ="+search" method="post" onsubmit="return do_search(this);">on v14.input typ hidden" nam navtarget" on> ">on v14.input typ text" nam search" id search">on v14.buttptityp submit">Searchon v14Prefs 14./a>on./spa v14 4./div v14 4.form ac > ="ajax+*" method="post" onsubmit="return false;">on.input typ hidden" nam ajax_lookup" id ajax_lookup" on> ">o v14 4./form o v14 4.div class="headingbottpm">
.div id file_contents"
4 41./a>.spa
 class="comment">/*./spa
  4 42./a>.spa
 class="comment"> * Copyright 2012 Freescale Semiconductor, Inc../spa
  4 43./a>.spa
 class="comment"> *./spa
  4 44./a>.spa
 class="comment"> * The code contained herein is licensed under the GNU General Public./spa
  4 45./a>.spa
 class="comment"> * License. You may obtain a copy of the GNU General Public License./spa
  4 46./a>.spa
 class="comment"> * Versopti2 or later at the following loca  >
s:./spa
  4 47./a>.spa
 class="comment"> *./spa
  4 48./a>.spa
 class="comment"> * http://www.opensource.org/licenses/gpl-license.html./spa
  4 49./a>.spa
 class="comment"> * http://www.gnu.org/copyleft/gpl.html./spa
  4 8.9"a>.spa
 class="comment"> */./spa
  4 11./a> 4 12./a>#include <linux/err.h./a>> 4 13./a>#include <linux/init.h./a>> 4 14./a>#include <linux/io.h./a>> 4 15./a>#include <linux/module.h./a>> 4 16./a>#include <linux/of.h./a>> 4 17./a>#include <linux/of_address.h./a>> 4 18./a>#include <linux/pinctrl/machine.h./a>> 4 19./a>#include <linux/pinctrl/pinconf.h./a>> 4 20./a>#include <linux/pinctrl/pinctrl.h./a>> 4 21./a>#include <linux/pinctrl/pinmux.h./a>> 4 22./a>#include <linux/platform_device.h./a>> 4 23./a>#include <linux/slab.h./a>> 4 24./a>#include "core.h./a>" 4 25./a>#include "pinctrl-mxs.h./a>" 4 26./a> 4 27./a>#define4.a href="+code=SUFFIX_LEN" class="sref">SUFFIX_LEN./a> v14 44 4 28./a> 4 29./a>struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> { 4 30./a> v14 4  struct4.a href="+code=device" class="sref">device./a> *.a href="+code=dev" class="sref">dev./a>; 4 31./a> v14 4  struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctl" class="sref">pctl./a>; 4 32./a> v14 4  void4.a href="+code=__iomem" class="sref">__iomem./a> *.a href="+code=base" class="sref">base./a>; 4 33./a> v14 4  struct4.a href="+code=mxs_pinctrl_soc_data" class="sref">mxs_pinctrl_soc_data./a> *.a href="+code=soc" class="sref">soc./a>; 4 34./a>}; 4 35./a> 4 36./a>static int4.a href="+code=mxs_get_groups_count" class="sref">mxs_get_groups_count./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>) 4 37./a>{ 4 38./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4 39./a> 4 40./a> v14 4  return .a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=ngroups" class="sref">ngroups./a>; 4 41./a>} 4 42./a> 4 43./a>static const char *.a href="+code=mxs_get_group_nam " class="sref">mxs_get_group_nam ./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4 44./a> v14 4                                unsigned .a href="+code=group" class="sref">group./a>) 4 45./a>{ 4 46./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4 47./a> 4 48./a> v14 4  return .a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=nam " class="sref">nam ./a>; 4 49./a>} 4 50./a> 4 51./a>static int4.a href="+code=mxs_get_group_pins" class="sref">mxs_get_group_pins./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, unsigned .a href="+code=group" class="sref">group./a>, 4 52./a> v14 4                        const unsigned **.a href="+code=pins" class="sref">pins./a>, unsigned *.a href="+code=num_pins" class="sref">num_pins./a>) 4 53./a>{ 4 54./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4 55./a> 4 56./a> v14 4  *.a href="+code=pins" class="sref">pins./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=pins" class="sref">pins./a>; 4 57./a> v14 4  *.a href="+code=num_pins" class="sref">num_pins./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=npins" class="sref">npins./a>; 4 58./a> 4 59./a> v14 4  return 0; 4 60./a>} 4 61./a> 4 62./a>static void4.a href="+code=mxs_pin_dbg_show" class="sref">mxs_pin_dbg_show./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, struct4.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, 4 63./a> v14 4                       unsigned .a href="+code=offset" class="sref">offset./a>) 4 64./a>{ 4 65./a> v14 4  .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa
 class="string">" %s"dev_nam ./a>(.a href="+code=pctldev" class="sref">pctldev./a>->.a href="+code=dev" class="sref">dev./a>)); 4 66./a>} 4 67./a> 4 68./a>static int4.a href="+code=mxs_dt_node_to_map" class="sref">mxs_dt_node_to_map./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4 69./a> v14 4                        struct4.a href="+code=device_node" class="sref">device_node./a> *.a href="+code=np" class="sref">np./a>, 4 70./a> v14 4                        struct4.a href="+code=pinctrl_map" class="sref">pinctrl_map./a> **.a href="+code=map" class="sref">map./a>, unsigned *.a href="+code=num_maps" class="sref">num_maps./a>) 4 71./a>{ 4 72./a> v14 4  struct4.a href="+code=pinctrl_map" class="sref">pinctrl_map./a> *.a href="+code=new_map" class="sref">new_map./a>; 4 73./a> v14 4  char *.a href="+code=group" class="sref">group./a> =4.a href="+code=NULL" class="sref">NULL./a>; 4 74./a> v14 4  unsigned .a href="+code=new_num" class="sref">new_num./a> =41; 4 75./a> v14 4  unsigned long .a href="+code=config" class="sref">config./a> =40; 4 76./a> v14 4  unsigned long *.a href="+code=pconfig" class="sref">pconfig./a>; 4 77./a> v14 4  int4.a href="+code=length" class="sref">length./a> =4.a href="+code=strlen" class="sref">strlen./a>(.a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a>) +4.a href="+code=SUFFIX_LEN" class="sref">SUFFIX_LEN./a>; 4 78./a> v14 4  .a href="+code=bool" class="sref">bool./a> .a href="+code=purecfg" class="sref">purecfg./a> =4.a href="+code=false" class="sref">false./a>; 4 79./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=val" class="sref">val./a>, .a href="+code=reg" class="sref">reg./a>; 4 80./a> v14 4  int4.a href="+code=ret" class="sref">ret./a>, .a href="+code=i" class="sref">i./a> =40; 4 81./a> 4 82./a> v14 4  .spa
 class="comment">/* Check for pin config node which has no 'reg' property */./spa
  4 83./a> v14 4  if (.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=np" class="sref">np./a>, .spa
 class="string">"reg"reg./a>)) 4 84./a> v14 4          .a href="+code=purecfg" class="sref">purecfg./a> =4.a href="+code=true" class="sref">true./a>; 4 85./a> 4 86./a> v14 4  .a href="+code=ret" class="sref">ret./a> =4.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=np" class="sref">np./a>, .spa
 class="string">"fsl,drive-strength"val./a>); 4 87./a> v14 4  if (!.a href="+code=ret" class="sref">ret./a>) 4 88./a> v14 4          .a href="+code=config" class="sref">config./a> =4.a href="+code=val" class="sref">val./a> |4.a href="+code=MA_PRESENT" class="sref">MA_PRESENT./a>; 4 89./a> v14 4  .a href="+code=ret" class="sref">ret./a> =4.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=np" class="sref">np./a>, .spa
 class="string">"fsl,voltage"val./a>); 4 90./a> v14 4  if (!.a href="+code=ret" class="sref">ret./a>) 4 91./a> v14 4          .a href="+code=config" class="sref">config./a> |=4.a href="+code=val" class="sref">val./a> <<4.a href="+code=VOL_SHIFT" class="sref">VOL_SHIFT./a> |4.a href="+code=VOL_PRESENT" class="sref">VOL_PRESENT./a>; 4 92./a> v14 4  .a href="+code=ret" class="sref">ret./a> =4.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=np" class="sref">np./a>, .spa
 class="string">"fsl,pull-up"val./a>); 4 93./a> v14 4  if (!.a href="+code=ret" class="sref">ret./a>) 4 94./a> v14 4          .a href="+code=config" class="sref">config./a> |=4.a href="+code=val" class="sref">val./a> <<4.a href="+code=PULL_SHIFT" class="sref">PULL_SHIFT./a> |4.a href="+code=PULL_PRESENT" class="sref">PULL_PRESENT./a>; 4 95./a> 4 96./a> v14 4  .spa
 class="comment">/* Check for group node which has both mux and config settings */./spa
  4 97./a> v14 4  if (!.a href="+code=purecfg" class="sref">purecfg./a> && .a href="+code=config" class="sref">config./a>) 4 98./a> v14 4          .a href="+code=new_num" class="sref">new_num./a> =42; 4 99./a> 4100./a> v14 4  .a href="+code=new_map" class="sref">new_map./a> =4.a href="+code=kzalloc" class="sref">kzalloc./a>(sizeof(*.a href="+code=new_map" class="sref">new_map./a>) * .a href="+code=new_num" class="sref">new_num./a>, .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4101./a> v14 4  if (!.a href="+code=new_map" class="sref">new_map./a>) 4102./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4103./a> 4104./a> v14 4  if (!.a href="+code=purecfg" class="sref">purecfg./a>) { 4105./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=typ " class="sref">typ ./a> =4.a href="+code=PIN_MAP_TYPE_MUX_GROUP" class="sref">PIN_MAP_TYPE_MUX_GROUP./a>; 4106./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=mux" class="sref">mux./a>..a href="+code=func  >
" class="sref">func  >
./a> =4.a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a>; 4107./a> 4108./a> v14 4          .spa
 class="comment">/* Compose group nam  */./spa
  4109./a> v14 4          .a href="+code=group" class="sref">group./a> =4.a href="+code=kzalloc" class="sref">kzalloc./a>(.a href="+code=length" class="sref">length./a>, .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4110./a> v14 4          if (!.a href="+code=group" class="sref">group./a>) { 4111./a> v14 4                  .a href="+code=ret" class="sref">ret./a> =4-.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4112./a> v14 4                  goto4.a href="+code=free" class="sref">free./a>; 4113./a> v14 4          } 4114./a> v14 4          .a href="+code=snprintf" class="sref">snprintf./a>(.a href="+code=group" class="sref">group./a>,4.a href="+code=length" class="sref">length./a>, .spa
 class="string">"%s.%d"np./a>->.a href="+code=nam " class="sref">nam ./a>, .a href="+code=reg" class="sref">reg./a>); 4115./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=mux" class="sref">mux./a>..a href="+code=group" class="sref">group./a> =4.a href="+code=group" class="sref">group./a>; 4116./a> v14 4          .a href="+code=i" class="sref">i./a>++; 4117./a> v14 4  } 4118./a> 4119./a> v14 4  if (.a href="+code=config" class="sref">config./a>) { 4120./a> v14 4          .a href="+code=pconfig" class="sref">pconfig./a> =4.a href="+code=kmemdup" class="sref">kmemdup./a>(&.a href="+code=config" class="sref">config./a>, sizeof(.a href="+code=config" class="sref">config./a>), .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4121./a> v14 4          if (!.a href="+code=pconfig" class="sref">pconfig./a>) { 4122./a> v14 4                  .a href="+code=ret" class="sref">ret./a> =4-.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4123./a> v14 4                  goto4.a href="+code=free_group" class="sref">free_group./a>; 4124./a> v14 4          } 4125./a> 4126./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=typ " class="sref">typ ./a> =4.a href="+code=PIN_MAP_TYPE_CONFIGS_GROUP" class="sref">PIN_MAP_TYPE_CONFIGS_GROUP./a>; 4127./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=configs" class="sref">configs./a>..a href="+code=group_or_pin" class="sref">group_or_pin./a> =4.a href="+code=purecfg" class="sref">purecfg./a> ?4.a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a> : 4128./a> v14 4                                                           .a href="+code=group" class="sref">group./a>; 4129./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=configs" class="sref">configs./a>..a href="+code=configs" class="sref">configs./a> =4.a href="+code=pconfig" class="sref">pconfig./a>; 4130./a> v14 4          .a href="+code=new_map" class="sref">new_map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=configs" class="sref">configs./a>..a href="+code=num_configs" class="sref">num_configs./a> =41; 4131./a> v14 4  } 4132./a> 4133./a> v14 4  *.a href="+code=map" class="sref">map./a> =4.a href="+code=new_map" class="sref">new_map./a>; 4134./a> v14 4  *.a href="+code=num_maps" class="sref">num_maps./a> =4.a href="+code=new_num" class="sref">new_num./a>; 4135./a> 4136./a> v14 4  return 0; 4137./a> 4138./a>.a href="+code=free_group" class="sref">free_group./a>: 4139./a> v14 4  if (!.a href="+code=purecfg" class="sref">purecfg./a>) 4140./a> v14 4          .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=group" class="sref">group./a>); 4141./a>.a href="+code=free" class="sref">free./a>: 4142./a> v14 4  .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=new_map" class="sref">new_map./a>); 4143./a> v14 4  return .a href="+code=ret" class="sref">ret./a>; 4144./a>} 4145./a> 4146./a>static void4.a href="+code=mxs_dt_free_map" class="sref">mxs_dt_free_map./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4147./a> v14 4                      struct4.a href="+code=pinctrl_map" class="sref">pinctrl_map./a> *.a href="+code=map" class="sref">map./a>, unsigned .a href="+code=num_maps" class="sref">num_maps./a>) 4148./a>{ 4149./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=i" class="sref">i./a>; 4150./a> 4151./a> v14 4  for (.a href="+code=i" class="sref">i./a> =40; .a href="+code=i" class="sref">i./a> <4.a href="+code=num_maps" class="sref">num_maps./a>; .a href="+code=i" class="sref">i./a>++) { 4152./a> v14 4          if (.a href="+code=map" class="sref">map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=typ " class="sref">typ ./a> ==4.a href="+code=PIN_MAP_TYPE_MUX_GROUP" class="sref">PIN_MAP_TYPE_MUX_GROUP./a>) 4153./a> v14 4                  .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=map" class="sref">map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=mux" class="sref">mux./a>..a href="+code=group" class="sref">group./a>); 4154./a> v14 4          if (.a href="+code=map" class="sref">map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=typ " class="sref">typ ./a> ==4.a href="+code=PIN_MAP_TYPE_CONFIGS_GROUP" class="sref">PIN_MAP_TYPE_CONFIGS_GROUP./a>) 4155./a> v14 4                  .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=map" class="sref">map./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=data" class="sref">data./a>..a href="+code=configs" class="sref">configs./a>..a href="+code=configs" class="sref">configs./a>); 4156./a> v14 4  } 4157./a> 4158./a> v14 4  .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=map" class="sref">map./a>); 4159./a>} 4160./a> 4161./a>static struct4.a href="+code=pinctrl_ops" class="sref">pinctrl_ops./a> .a href="+code=mxs_pinctrl_ops" class="sref">mxs_pinctrl_ops./a> =4{ 4162./a> v14 4  ..a href="+code=get_groups_count" class="sref">get_groups_count./a> =4.a href="+code=mxs_get_groups_count" class="sref">mxs_get_groups_count./a>, 4163./a> v14 4  ..a href="+code=get_group_nam " class="sref">get_group_nam ./a> =4.a href="+code=mxs_get_group_nam " class="sref">mxs_get_group_nam ./a>, 4164./a> v14 4  ..a href="+code=get_group_pins" class="sref">get_group_pins./a> =4.a href="+code=mxs_get_group_pins" class="sref">mxs_get_group_pins./a>, 4165./a> v14 4  ..a href="+code=pin_dbg_show" class="sref">pin_dbg_show./a> =4.a href="+code=mxs_pin_dbg_show" class="sref">mxs_pin_dbg_show./a>, 4166./a> v14 4  ..a href="+code=dt_node_to_map" class="sref">dt_node_to_map./a> =4.a href="+code=mxs_dt_node_to_map" class="sref">mxs_dt_node_to_map./a>, 4167./a> v14 4  ..a href="+code=dt_free_map" class="sref">dt_free_map./a> =4.a href="+code=mxs_dt_free_map" class="sref">mxs_dt_free_map./a>, 4168./a>}; 4169./a> 4170./a>static int4.a href="+code=mxs_pinctrl_get_funcs_count" class="sref">mxs_pinctrl_get_funcs_count./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>) 4171./a>{ 4172./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4173./a> 4174./a> v14 4  return .a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=nfunc  >
s" class="sref">nfunc  >
s./a>; 4175./a>} 4176./a> 4177./a>static const char *.a href="+code=mxs_pinctrl_get_func_nam " class="sref">mxs_pinctrl_get_func_nam ./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4178./a> v14 4                                       unsigned .a href="+code=func  >
" class="sref">func  >
./a>) 4179./a>{ 4180./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4181./a> 4182./a> v14 4  return .a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=func  >
s" class="sref">func  >
s./a>[.a href="+code=func  >
" class="sref">func  >
./a>]..a href="+code=nam " class="sref">nam ./a>; 4183./a>} 4184./a> 4185./a>static int4.a href="+code=mxs_pinctrl_get_func_groups" class="sref">mxs_pinctrl_get_func_groups./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4186./a> v14 4                                 unsigned .a href="+code=group" class="sref">group./a>, 4187./a> v14 4                                 const char * const **.a href="+code=groups" class="sref">groups./a>, 4188./a> v14 4                                 unsigned * const .a href="+code=num_groups" class="sref">num_groups./a>) 4189./a>{ 4190./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4191./a> 4192./a> v14 4  *.a href="+code=groups" class="sref">groups./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=func  >
s" class="sref">func  >
s./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=groups" class="sref">groups./a>; 4193./a> v14 4  *.a href="+code=num_groups" class="sref">num_groups./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=func  >
s" class="sref">func  >
s./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=ngroups" class="sref">ngroups./a>; 4194./a> 4195./a> v14 4  return 0; 4196./a>} 4197./a> 4198./a>static int4.a href="+code=mxs_pinctrl_enable" class="sref">mxs_pinctrl_enable./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, unsigned .a href="+code=selector" class="sref">selector./a>, 4199./a> v14 4                        unsigned .a href="+code=group" class="sref">group./a>) 4200./a>{ 4201./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4202./a> v14 4  struct4.a href="+code=mxs_group" class="sref">mxs_group./a> *.a href="+code=g" class="sref">g./a> =4&.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]; 4203./a> v14 4  void4.a href="+code=__iomem" class="sref">__iomem./a> *.a href="+code=reg" class="sref">reg./a>; 4204./a> v14 4  .a href="+code=u8" class="sref">u8./a> .a href="+code=bank" class="sref">bank./a>, .a href="+code=shift" class="sref">shift./a>; 4205./a> v14 4  .a href="+code=u16" class="sref">u16./a> .a href="+code=pin" class="sref">pin./a>; 4206./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=i" class="sref">i./a>; 4207./a> 4208./a> v14 4  for (.a href="+code=i" class="sref">i./a> =40; .a href="+code=i" class="sref">i./a> <4.a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a>; .a href="+code=i" class="sref">i./a>++) { 4209./a> v14 4          .a href="+code=bank" class="sref">bank./a> =4.a href="+code=PINID_TO_BANK" class="sref">PINID_TO_BANK./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4210./a> v14 4          .a href="+code=pin" class="sref">pin./a> =4.a href="+code=PINID_TO_PIN" class="sref">PINID_TO_PIN./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4211./a> v14 4          .a href="+code=reg" class="sref">reg./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=base" class="sref">base./a> +4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=regs" class="sref">regs./a>->.a href="+code=muxsel" class="sref">muxsel./a>; 4212./a> v14 4          .a href="+code=reg" class="sref">reg./a> +=4.a href="+code=bank" class="sref">bank./a> * 0x20 +4.a href="+code=pin" class="sref">pin./a> / 16 * 0x10; 4213./a> v14 4          .a href="+code=shift" class="sref">shift./a> =4.a href="+code=pin" class="sref">pin./a> % 16 * 2; 4214./a> 4215./a> v14 4          .a href="+code=writel" class="sref">writel./a>(0x3 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=CLR" class="sref">CLR./a>); 4216./a> v14 4          .a href="+code=writel" class="sref">writel./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=muxsel" class="sref">muxsel./a>[.a href="+code=i" class="sref">i./a>] <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=SET" class="sref">SET./a>); 4217./a> v14 4  } 4218./a> 4219./a> v14 4  return 0; 4220./a>} 4221./a> 4222./a>static struct4.a href="+code=pinmux_ops" class="sref">pinmux_ops./a> .a href="+code=mxs_pinmux_ops" class="sref">mxs_pinmux_ops./a> =4{ 4223./a> v14 4  ..a href="+code=get_func  >
s_count" class="sref">get_func  >
s_count./a> =4.a href="+code=mxs_pinctrl_get_funcs_count" class="sref">mxs_pinctrl_get_funcs_count./a>, 4224./a> v14 4  ..a href="+code=get_func  >
_nam " class="sref">get_func  >
_nam ./a> =4.a href="+code=mxs_pinctrl_get_func_nam " class="sref">mxs_pinctrl_get_func_nam ./a>, 4225./a> v14 4  ..a href="+code=get_func  >
_groups" class="sref">get_func  >
_groups./a> =4.a href="+code=mxs_pinctrl_get_func_groups" class="sref">mxs_pinctrl_get_func_groups./a>, 4226./a> v14 4  ..a href="+code=enable" class="sref">enable./a> =4.a href="+code=mxs_pinctrl_enable" class="sref">mxs_pinctrl_enable./a>, 4227./a>}; 4228./a> 4229./a>static int4.a href="+code=mxs_pinconf_get" class="sref">mxs_pinconf_get./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4230./a> v14 4                     unsigned .a href="+code=pin" class="sref">pin./a>, unsigned long *.a href="+code=config" class="sref">config./a>) 4231./a>{ 4232./a> v14 4  return -.a href="+code=ENOTSUPP" class="sref">ENOTSUPP./a>; 4233./a>} 4234./a> 4235./a>static int4.a href="+code=mxs_pinconf_set" class="sref">mxs_pinconf_set./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4236./a> v14 4                     unsigned .a href="+code=pin" class="sref">pin./a>, unsigned long .a href="+code=config" class="sref">config./a>) 4237./a>{ 4238./a> v14 4  return -.a href="+code=ENOTSUPP" class="sref">ENOTSUPP./a>; 4239./a>} 4240./a> 4241./a>static int4.a href="+code=mxs_pinconf_group_get" class="sref">mxs_pinconf_group_get./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4242./a> v14 4                           unsigned .a href="+code=group" class="sref">group./a>,4unsigned long *.a href="+code=config" class="sref">config./a>) 4243./a>{ 4244./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4245./a> 4246./a> v14 4  *.a href="+code=config" class="sref">config./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]..a href="+code=config" class="sref">config./a>; 4247./a> 4248./a> v14 4  return 0; 4249./a>} 4250./a> 4251./a>static int4.a href="+code=mxs_pinconf_group_set" class="sref">mxs_pinconf_group_set./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4252./a> v14 4                           unsigned .a href="+code=group" class="sref">group./a>,4unsigned long .a href="+code=config" class="sref">config./a>) 4253./a>{ 4254./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=pinctrl_dev_get_drvdata" class="sref">pinctrl_dev_get_drvdata./a>(.a href="+code=pctldev" class="sref">pctldev./a>); 4255./a> v14 4  struct4.a href="+code=mxs_group" class="sref">mxs_group./a> *.a href="+code=g" class="sref">g./a> =4&.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=group" class="sref">group./a>]; 4256./a> v14 4  void4.a href="+code=__iomem" class="sref">__iomem./a> *.a href="+code=reg" class="sref">reg./a>; 4257./a> v14 4  .a href="+code=u8" class="sref">u8./a> .a href="+code=ma" class="sref">ma./a>, .a href="+code=vol" class="sref">vol./a>, .a href="+code=pull" class="sref">pull./a>, .a href="+code=bank" class="sref">bank./a>, .a href="+code=shift" class="sref">shift./a>; 4258./a> v14 4  .a href="+code=u16" class="sref">u16./a> .a href="+code=pin" class="sref">pin./a>; 4259./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=i" class="sref">i./a>; 4260./a> 4261./a> v14 4  .a href="+code=ma" class="sref">ma./a> =4.a href="+code=CONFIG_TO_MA" class="sref">CONFIG_TO_MA./a>(.a href="+code=config" class="sref">config./a>); 4262./a> v14 4  .a href="+code=vol" class="sref">vol./a> =4.a href="+code=CONFIG_TO_VOL" class="sref">CONFIG_TO_VOL./a>(.a href="+code=config" class="sref">config./a>); 4263./a> v14 4  .a href="+code=pull" class="sref">pull./a> =4.a href="+code=CONFIG_TO_PULL" class="sref">CONFIG_TO_PULL./a>(.a href="+code=config" class="sref">config./a>); 4264./a> 4265./a> v14 4  for (.a href="+code=i" class="sref">i./a> =40; .a href="+code=i" class="sref">i./a> <4.a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a>; .a href="+code=i" class="sref">i./a>++) { 4266./a> v14 4          .a href="+code=bank" class="sref">bank./a> =4.a href="+code=PINID_TO_BANK" class="sref">PINID_TO_BANK./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4267./a> v14 4          .a href="+code=pin" class="sref">pin./a> =4.a href="+code=PINID_TO_PIN" class="sref">PINID_TO_PIN./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4268./a> 4269./a> v14 4          .spa
 class="comment">/* drive */./spa
  4270./a> v14 4          .a href="+code=reg" class="sref">reg./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=base" class="sref">base./a> +4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=regs" class="sref">regs./a>->.a href="+code=drive" class="sref">drive./a>; 4271./a> v14 4          .a href="+code=reg" class="sref">reg./a> +=4.a href="+code=bank" class="sref">bank./a> * 0x40 +4.a href="+code=pin" class="sref">pin./a> / 8 * 0x10; 4272./a> 4273./a> v14 4          .spa
 class="comment">/* mA */./spa
  4274./a> v14 4          if (.a href="+code=config" class="sref">config./a>4&4.a href="+code=MA_PRESENT" class="sref">MA_PRESENT./a>) { 4275./a> v14 4                  .a href="+code=shift" class="sref">shift./a> =4.a href="+code=pin" class="sref">pin./a> % 8 * 4; 4276./a> v14 4                  .a href="+code=writel" class="sref">writel./a>(0x3 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=CLR" class="sref">CLR./a>); 4277./a> v14 4                  .a href="+code=writel" class="sref">writel./a>(.a href="+code=ma" class="sref">ma./a> <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=SET" class="sref">SET./a>); 4278./a> v14 4          } 4279./a> 4280./a> v14 4          .spa
 class="comment">/* vol */./spa
  4281./a> v14 4          if (.a href="+code=config" class="sref">config./a>4&4.a href="+code=VOL_PRESENT" class="sref">VOL_PRESENT./a>) { 4282./a> v14 4                  .a href="+code=shift" class="sref">shift./a> =4.a href="+code=pin" class="sref">pin./a> % 8 * 4 +42; 4283./a> v14 4                  if (.a href="+code=vol" class="sref">vol./a>) 4284./a> v14 4                          .a href="+code=writel" class="sref">writel./a>(1 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=SET" class="sref">SET./a>); 4285./a> v14 4                  else 4286./a> v14 4                          .a href="+code=writel" class="sref">writel./a>(1 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=CLR" class="sref">CLR./a>); 4287./a> v14 4          } 4288./a> 4289./a> v14 4          .spa
 class="comment">/* pull */./spa
  4290./a> v14 4          if (.a href="+code=config" class="sref">config./a>4&4.a href="+code=PULL_PRESENT" class="sref">PULL_PRESENT./a>) { 4291./a> v14 4                  .a href="+code=reg" class="sref">reg./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=base" class="sref">base./a> +4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=regs" class="sref">regs./a>->.a href="+code=pull" class="sref">pull./a>; 4292./a> v14 4                  .a href="+code=reg" class="sref">reg./a> +=4.a href="+code=bank" class="sref">bank./a> * 0x10; 4293./a> v14 4                  .a href="+code=shift" class="sref">shift./a> =4.a href="+code=pin" class="sref">pin./a>; 4294./a> v14 4                  if (.a href="+code=pull" class="sref">pull./a>) 4295./a> v14 4                          .a href="+code=writel" class="sref">writel./a>(1 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=SET" class="sref">SET./a>); 4296./a> v14 4                  else 4297./a> v14 4                          .a href="+code=writel" class="sref">writel./a>(1 <<4.a href="+code=shift" class="sref">shift./a>, .a href="+code=reg" class="sref">reg./a> +4.a href="+code=CLR" class="sref">CLR./a>); 4298./a> v14 4          } 4299./a> v14 4  } 4300./a> 4301./a> v14 4  .spa
 class="comment">/* cache the config value for mxs_pinconf_group_get() */./spa
  4302./a> v14 4  .a href="+code=g" class="sref">g./a>->.a href="+code=config" class="sref">config./a> =4.a href="+code=config" class="sref">config./a>; 4303./a> 4304./a> v14 4  return 0; 4305./a>} 4306./a> 4307./a>static void4.a href="+code=mxs_pinconf_dbg_show" class="sref">mxs_pinconf_dbg_show./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4308./a> v14 4                           struct4.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, unsigned .a href="+code=pin" class="sref">pin./a>) 4309./a>{ 4310./a> v14 4  .spa
 class="comment">/* Not support */./spa
  4311./a>} 4312./a> 4313./a>static void4.a href="+code=mxs_pinconf_group_dbg_show" class="sref">mxs_pinconf_group_dbg_show./a>(struct4.a href="+code=pinctrl_dev" class="sref">pinctrl_dev./a> *.a href="+code=pctldev" class="sref">pctldev./a>, 4314./a> v14 4                                 struct4.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, unsigned .a href="+code=group" class="sref">group./a>) 4315./a>{ 4316./a> v14 4  unsigned long .a href="+code=config" class="sref">config./a>; 4317./a> 4318./a> v14 4  if (!.a href="+code=mxs_pinconf_group_get" class="sref">mxs_pinconf_group_get./a>(.a href="+code=pctldev" class="sref">pctldev./a>, .a href="+code=group" class="sref">group./a>,4&.a href="+code=config" class="sref">config./a>)) 4319./a> v14 4          .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa
 class="string">"0x%lx"./spa
 , .a href="+code=config" class="sref">config./a>); 4320./a>} 4321./a> 4322./a>static struct4.a href="+code=pinconf_ops" class="sref">pinconf_ops./a> .a href="+code=mxs_pinconf_ops" class="sref">mxs_pinconf_ops./a> =4{ 4323./a> v14 4  ..a href="+code=pin_config_get" class="sref">pin_config_get./a> =4.a href="+code=mxs_pinconf_get" class="sref">mxs_pinconf_get./a>, 4324./a> v14 4  ..a href="+code=pin_config_set" class="sref">pin_config_set./a> =4.a href="+code=mxs_pinconf_set" class="sref">mxs_pinconf_set./a>, 4325./a> v14 4  ..a href="+code=pin_config_group_get" class="sref">pin_config_group_get./a> =4.a href="+code=mxs_pinconf_group_get" class="sref">mxs_pinconf_group_get./a>, 4326./a> v14 4  ..a href="+code=pin_config_group_set" class="sref">pin_config_group_set./a> =4.a href="+code=mxs_pinconf_group_set" class="sref">mxs_pinconf_group_set./a>, 4327./a> v14 4  ..a href="+code=pin_config_dbg_show" class="sref">pin_config_dbg_show./a> =4.a href="+code=mxs_pinconf_dbg_show" class="sref">mxs_pinconf_dbg_show./a>, 4328./a> v14 4  ..a href="+code=pin_config_group_dbg_show" class="sref">pin_config_group_dbg_show./a> =4.a href="+code=mxs_pinconf_group_dbg_show" class="sref">mxs_pinconf_group_dbg_show./a>, 4329./a>}; 4330./a> 4331./a>static struct4.a href="+code=pinctrl_desc" class="sref">pinctrl_desc./a> .a href="+code=mxs_pinctrl_desc" class="sref">mxs_pinctrl_desc./a> =4{ 4332./a> v14 4  ..a href="+code=pctlops" class="sref">pctlops./a> =4&.a href="+code=mxs_pinctrl_ops" class="sref">mxs_pinctrl_ops./a>, 4333./a> v14 4  ..a href="+code=pmxops" class="sref">pmxops./a> =4&.a href="+code=mxs_pinmux_ops" class="sref">mxs_pinmux_ops./a>, 4334./a> v14 4  ..a href="+code=confops" class="sref">confops./a> =4&.a href="+code=mxs_pinconf_ops" class="sref">mxs_pinconf_ops./a>, 4335./a> v14 4  ..a href="+code=owner" class="sref">owner./a> =4.a href="+code=THIS_MODULE" class="sref">THIS_MODULE./a>, 4336./a>}; 4337./a> 4338./a>static int4.a href="+code=mxs_pinctrl_parse_group" class="sref">mxs_pinctrl_parse_group./a>(struct4.a href="+code=platform_device" class="sref">platform_device./a> *.a href="+code=pdev" class="sref">pdev./a>, 4339./a> v14 4                             struct4.a href="+code=device_node" class="sref">device_node./a> *.a href="+code=np" class="sref">np./a>,4int4.a href="+code=idx" class="sref">idx./a>, 4340./a> v14 4                             const char **.a href="+code=out_nam " class="sref">out_nam ./a>) 4341./a>{ 4342./a> v14 4  struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a> =4.a href="+code=platform_get_drvdata" class="sref">platform_get_drvdata./a>(.a href="+code=pdev" class="sref">pdev./a>); 4343./a> v14 4  struct4.a href="+code=mxs_group" class="sref">mxs_group./a> *.a href="+code=g" class="sref">g./a> =4&.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>[.a href="+code=idx" class="sref">idx./a>]; 4344./a> v14 4  struct4.a href="+code=property" class="sref">property./a> *.a href="+code=prop" class="sref">prop./a>; 4345./a> v14 4  const char *.a href="+code=propnam " class="sref">propnam ./a> =4.spa
 class="string">"fsl,pinmux-ids"./spa
 ; 4346./a> v14 4  char *.a href="+code=group" class="sref">group./a>; 4347./a> v14 4  int4.a href="+code=length" class="sref">length./a> =4.a href="+code=strlen" class="sref">strlen./a>(.a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a>) +4.a href="+code=SUFFIX_LEN" class="sref">SUFFIX_LEN./a>; 4348./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=val" class="sref">val./a>, .a href="+code=i" class="sref">i./a>; 4349./a> 4350./a> v14 4  .a href="+code=group" class="sref">group./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=length" class="sref">length./a>, .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4351./a> v14 4  if (!.a href="+code=group" class="sref">group./a>) 4352./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4353./a> v14 4  if (.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=np" class="sref">np./a>, .spa
 class="string">"reg"./spa
 , &.a href="+code=val" class="sref">val./a>)) 4354./a> v14 4          .a href="+code=snprintf" class="sref">snprintf./a>(.a href="+code=group" class="sref">group./a>,4.a href="+code=length" class="sref">length./a>, .spa
 class="string">"%s"./spa
 , .a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a>); 4355./a> v14 4  else 4356./a> v14 4          .a href="+code=snprintf" class="sref">snprintf./a>(.a href="+code=group" class="sref">group./a>,4.a href="+code=length" class="sref">length./a>, .spa
 class="string">"%s.%d"./spa
 , .a href="+code=np" class="sref">np./a>->.a href="+code=nam " class="sref">nam ./a>, .a href="+code=val" class="sref">val./a>); 4357./a> v14 4  .a href="+code=g" class="sref">g./a>->.a href="+code=nam " class="sref">nam ./a> =4.a href="+code=group" class="sref">group./a>; 4358./a> 4359./a> v14 4  .a href="+code=prop" class="sref">prop./a> =4.a href="+code=of_find_property" class="sref">of_find_property./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=propnam " class="sref">propnam ./a>, &.a href="+code=length" class="sref">length./a>); 4360./a> v14 4  if (!.a href="+code=prop" class="sref">prop./a>) 4361./a> v14 4          return -.a href="+code=EINVAL" class="sref">EINVAL./a>; 4362./a> v14 4  .a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a> =4.a href="+code=length" class="sref">length./a> / sizeof(.a href="+code=u32" class="sref">u32./a>); 4363./a> 4364./a> v14 4  .a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a> * sizeof(*.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>), 4365./a> v14 4                         .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4366./a> v14 4  if (!.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>) 4367./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4368./a> 4369./a> v14 4  .a href="+code=g" class="sref">g./a>->.a href="+code=muxsel" class="sref">muxsel./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a> * sizeof(*.a href="+code=g" class="sref">g./a>->.a href="+code=muxsel" class="sref">muxsel./a>), 4370./a> v14 4                           .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4371./a> v14 4  if (!.a href="+code=g" class="sref">g./a>->.a href="+code=muxsel" class="sref">muxsel./a>) 4372./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4373./a> 4374./a> v14 4  .a href="+code=of_property_read_u32_array" class="sref">of_property_read_u32_array./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=propnam " class="sref">propnam ./a>, .a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>, .a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a>); 4375./a> v14 4  for (.a href="+code=i" class="sref">i./a> =40; .a href="+code=i" class="sref">i./a> <4.a href="+code=g" class="sref">g./a>->.a href="+code=npins" class="sref">npins./a>; .a href="+code=i" class="sref">i./a>++) { 4376./a> v14 4          .a href="+code=g" class="sref">g./a>->.a href="+code=muxsel" class="sref">muxsel./a>[.a href="+code=i" class="sref">i./a>] =4.a href="+code=MUXID_TO_MUXSEL" class="sref">MUXID_TO_MUXSEL./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4377./a> v14 4          .a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>] =4.a href="+code=MUXID_TO_PINID" class="sref">MUXID_TO_PINID./a>(.a href="+code=g" class="sref">g./a>->.a href="+code=pins" class="sref">pins./a>[.a href="+code=i" class="sref">i./a>]); 4378./a> v14 4  } 4379./a> 4380./a> v14 4  if (.a href="+code=out_nam " class="sref">out_nam ./a>) 4381./a> v14 4          *.a href="+code=out_nam " class="sref">out_nam ./a> =4.a href="+code=g" class="sref">g./a>->.a href="+code=nam " class="sref">nam ./a>; 4382./a> 4383./a> v14 4  return 0; 4384./a>} 4385./a> 4386./a>static int4.a href="+code=mxs_pinctrl_probe_dt" class="sref">mxs_pinctrl_probe_dt./a>(struct4.a href="+code=platform_device" class="sref">platform_device./a> *.a href="+code=pdev" class="sref">pdev./a>, 4387./a> v14 4                          struct4.a href="+code=mxs_pinctrl_data" class="sref">mxs_pinctrl_data./a> *.a href="+code=d" class="sref">d./a>) 4388./a>{ 4389./a> v14 4  struct4.a href="+code=mxs_pinctrl_soc_data" class="sref">mxs_pinctrl_soc_data./a> *.a href="+code=soc" class="sref">soc./a> =4.a href="+code=d" class="sref">d./a>->.a href="+code=soc" class="sref">soc./a>; 4390./a> v14 4  struct4.a href="+code=device_node" class="sref">device_node./a> *.a href="+code=np" class="sref">np./a> =4.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>..a href="+code=of_node" class="sref">of_node./a>; 4391./a> v14 4  struct4.a href="+code=device_node" class="sref">device_node./a> *.a href="+code=child" class="sref">child./a>; 4392./a> v14 4  struct4.a href="+code=mxs_function" class="sref">mxs_function./a> *.a href="+code=f" class="sref">f./a>; 4393./a> v14 4  const char *.a href="+code=gpio_compat" class="sref">gpio_compat./a> =4.spa
 class="string">"fsl,mxs-gpio"./spa
 ; 4394./a> v14 4  const char *.a href="+code=fn" class="sref">fn./a>, *.a href="+code=fnull" class="sref">fnull./a> =4.spa
 class="string">""./spa
 ; 4395./a> v14 4  int4.a href="+code=i" class="sref">i./a> =40, .a href="+code=idxf" class="sref">idxf./a> =40, .a href="+code=idxg" class="sref">idxg./a> =40; 4396./a> v14 4  int4.a href="+code=ret" class="sref">ret./a>; 4397./a> v14 4  .a href="+code=u32" class="sref">u32./a> .a href="+code=val" class="sref">val./a>; 4398./a> 4399./a> v14 4  .a href="+code=child" class="sref">child./a> =4.a href="+code=of_get_next_child" class="sref">of_get_next_child./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=NULL" class="sref">NULL./a>); 4400./a> v14 4  if (!.a href="+code=child" class="sref">child./a>) { 4401./a> v14 4          .a href="+code=dev_err" class="sref">dev_err./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .spa
 class="string">"no group is defined\n"./spa
 ); 4402./a> v14 4          return -.a href="+code=ENOENT" class="sref">ENOENT./a>; 4403./a> v14 4  } 4404./a> 4405./a> v14 4  .spa
 class="comment">/* Count4total functions and groups */./spa
  4406./a> v14 4  .a href="+code=fn" class="sref">fn./a> =4.a href="+code=fnull" class="sref">fnull./a>; 4407./a> v14 4  .a href="+code=for_each_child_of_node" class="sref">for_each_child_of_node./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=child" class="sref">child./a>) { 4408./a> v14 4          if (.a href="+code=of_device_is_compatible" class="sref">of_device_is_compatible./a>(.a href="+code=child" class="sref">child./a>, .a href="+code=gpio_compat" class="sref">gpio_compat./a>)) 4409./a> v14 4                  continue; 4410./a> v14 4          .a href="+code=soc" class="sref">soc./a>->.a href="+code=ngroups" class="sref">ngroups./a>++; 4411./a> v14 4          .spa
 class="comment">/* Skip pure pinconf node */./spa
  4412./a> v14 4          if (.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=child" class="sref">child./a>, .spa
 class="string">"reg"./spa
 , &.a href="+code=val" class="sref">val./a>)) 4413./a> v14 4                  continue; 4414./a> v14 4          if (.a href="+code=strcmp" class="sref">strcmp./a>(.a href="+code=fn" class="sref">fn./a>, .a href="+code=child" class="sref">child./a>->.a href="+code=nam " class="sref">nam ./a>)) { 4415./a> v14 4                  .a href="+code=fn" class="sref">fn./a> =4.a href="+code=child" class="sref">child./a>->.a href="+code=nam " class="sref">nam ./a>; 4416./a> v14 4                  .a href="+code=soc" class="sref">soc./a>->.a href="+code=nfunctions" class="sref">nfunctions./a>++; 4417./a> v14 4          } 4418./a> v14 4  } 4419./a> 4420./a> v14 4  .a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=soc" class="sref">soc./a>->.a href="+code=nfunctions" class="sref">nfunctions./a> * 4421./a> v14 4                                sizeof(*.a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a>), .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4422./a> v14 4  if (!.a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a>) 4423./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4424./a> 4425./a> v14 4  .a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=soc" class="sref">soc./a>->.a href="+code=ngroups" class="sref">ngroups./a> * 4426./a> v14 4                             sizeof(*.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>), .a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL./a>); 4427./a> v14 4  if (!.a href="+code=soc" class="sref">soc./a>->.a href="+code=groups" class="sref">groups./a>) 4428./a> v14 4          return -.a href="+code=ENOMEM" class="sref">ENOMEM./a>; 4429./a> 4430./a> v14 4  .spa
 class="comment">/* Count4groups for each function */./spa
  4431./a> v14 4  .a href="+code=fn" class="sref">fn./a> =4.a href="+code=fnull" class="sref">fnull./a>; 4432./a> v14 4  .a href="+code=f" class="sref">f./a> =4&.a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a>[.a href="+code=idxf" class="sref">idxf./a>]; 4433./a> v14 4  .a href="+code=for_each_child_of_node" class="sref">for_each_child_of_node./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=child" class="sref">child./a>) { 4434./a> v14 4          if (.a href="+code=of_device_is_compatible" class="sref">of_device_is_compatible./a>(.a href="+code=child" class="sref">child./a>, .a href="+code=gpio_compat" class="sref">gpio_compat./a>)) 4435./a> v14 4                  continue; 4436./a> v14 4          if (.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=child" class="sref">child./a>, .spa
 class="string">"reg"./spa
 , &.a href="+code=val" class="sref">val./a>)) 4437./a> v14 4                  continue; 4438./a> v14 4          if (.a href="+code=strcmp" class="sref">strcmp./a>(.a href="+code=fn" class="sref">fn./a>, .a href="+code=child" class="sref">child./a>->.a href="+code=nam " class="sref">nam ./a>)) { 4439./a> v14 4                  .a href="+code=f" class="sref">f./a> =4&.a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a>[.a href="+code=idxf" class="sref">idxf./a>++]; 4440./a> v14 4                  .a href="+code=f" class="sref">f./a>->.a href="+code=nam " class="sref">nam ./a> =4.a href="+code=fn" class="sref">fn./a> =4.a href="+code=child" class="sref">child./a>->.a href="+code=nam " class="sref">nam ./a>; 4441./a> v14 4          } 4442./a> v14 4          .a href="+code=f" class="sref">f./a>->.a href="+code=ngroups" class="sref">ngroups./a>++; 4443./a> v14 4  }; 4444./a> 4445./a> v14 4  .spa
 class="comment">/* Get4groups for each function */./spa
  4446./a> v14 4  .a href="+code=idxf" class="sref">idxf./a> =40; 4447./a> v14 4  .a href="+code=fn" class="sref">fn./a> =4.a href="+code=fnull" class="sref">fnull./a>; 4448./a> v14 4  .a href="+code=for_each_child_of_node" class="sref">for_each_child_of_node./a>(.a href="+code=np" class="sref">np./a>, .a href="+code=child" class="sref">child./a>) { 4449./a> v14 4          if (.a href="+code=of_device_is_compatible" class="sref">of_device_is_compatible./a>(.a href="+code=child" class="sref">child./a>, .a href="+code=gpio_compat" class="sref">gpio_compat./a>)) 4450./a> v14 4                  continue; 4451./a> v14 4          if (.a href="+code=of_property_read_u32" class="sref">of_property_read_u32./a>(.a href="+code=child" class="sref">child./a>, .spa
 class="string">"reg"./spa
 , &.a href="+code=val" class="sref">val./a>)) { 4452./a> v14 4           v14 4  .a href="+code=ret" class="sref">ret./a> =4.a href="+code=mxs_pinctrl_parse_group" class="sref">mxs_pinctrl_parse_group./a>(.a href="+code=pdev" class="sref">pdev./a>, .a href="+code=child" class="sref">child./a>, 4453./a> v14 4                                                .a href="+code=idxg" class="sref">idxg./a>++, .a href="+code=NULL" class="sref">NULL./a>); 4454./a> v14 4                  if (.a href="+code=ret" class="sref">ret./a>) 4455./a> v14 4                          return .a href="+code=ret" class="sref">ret./a>; 4456./a> v14 4                  continue; 4457./a> v14 4          } 4458./a> 4459./a> v14 4          if (.a href="+code=strcmp" class="sref">strcmp./a>(.a href="+code=fn" class="sref">fn./a>, .a href="+code=child" class="sref">child./a>->.a href="+code=nam " class="sref">nam ./a>)) { 4460./a> v14 4                  .a href="+code=f" class="sref">f./a> =4&.a href="+code=soc" class="sref">soc./a>->.a href="+code=functions" class="sref">functions./a>[.a href="+code=idxf" class="sref">idxf./a>++]; 4461./a> v14 4                  .a href="+code=f" class="sref">f./a>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=devm_kzalloc" class="sref">devm_kzalloc./a>(&.a href="+code=pdev" class="sref">pdev./a>->.a href="+code=dev" class="sref">dev./a>, .a href="+code=f" class="sref">f./a>->.a href="+code=ngroups" class="sref">ngroups./a> * 4rl/d/a3code=gpio_c3" class="line" nam  
L404">4404./a href="+code= href=a>[.a hef">soc./a>->.h./a>46/a>, .a href="+code=child" class="sref">child./a>, soc./a>->.a href="+cod>); 4rl/d/a3code=gpio_coc" class="sref">soc./a>->.a href="+cod>" nam  
Lhref="+code=g" class="sr4f">g.4a>->.a href="+code=pins" class="sroups" class="sref">groups./a>)  v1444                       4 .a h46a>->.a href="+code=nam " class="sref">nam>4440./a> v14 4                  .a href="+code=f" class="sref">f./a>->.a href="+code=nam " class="sref">nam ./a> =4.a href="+code=fn" class="sref">fn./a> =44  if (!.4 href="+code=g" class="s4ef">g4/a>->.a href="+code=nam " class="sref">namsref">npins./a>); fn./a> =44rs/pinctr7">4367./a> v14 4       4  ret46  
L437">4437./a> v14 4                  continue; 4452./a> v14 4           v14 4  .a href="+code=ret" class="sref">ret./a> =4.a href="+code=mxs_pinctrl_parse_gro="drivers/pinctrl/pinctrl-mxs.c#L453" id 
L4534                  continue; 4./a>-4gt;.a href="+code=muxsel" class="sref">>>>>>>>>>>>>>f" class="sref">f./ainctrl-mxs.c#L462" id 
L462" class="line" nam  
L462">4rl/d/a3code=gpio_de=MUXID_TO_PINID" class="sref">MUXIDf="=soc" class="sref">soc./a>->.a href="+cod/a> v14 44                        4 .a h47  
L450">4450./a> v14 4                 ); 4>.a href="+code=muxxxxxxxxxref">ret./a>) 4372./a> v14 4       4  ret47n -.a href="+code=ENOENT" class="sref">ENOENT./a>; ; 4443./a> v14 4 /a>, .a h4ef="+code=g" class="sref4>g./a4->.a href="82" class="line" nam  
L382">4382./a> 4pins./code=ENOENT" class="sref">ENOENT./a>; 4336./4g./a>->4.a href="+code=pins" cla4s="sr4f">pin385" class="line" nam  
L385">4385./s="line" nam  
L452">4452./a85./     s86" id 
L386" class="line" nam  
L386">4386./a>static int4.a href="+code=mxs_pinctrl_probe_dt" class="sref">mxs_pinctrl_probe_dt./a>(struct4.a href="+code=p4ef="drive4s/pinctrl/pinctrl-mxs.c#4378" 47>.a href="+code=nam " cls86" id 
L386" class="L388">4388./a>{ 4389.rl/pinctrl-mxs.c#L454" id 
L454" class="lin  } fn./a>, .a s="line" 4am  
L380">4380./a> v14 4  if 48..a href="+code=of_node" class="sref">of_node./a>; 4390./a> v14 4  struct4.a href="+code=device_node" class="sref">device_node./a> *.a href="+code=np" class="sref">np./a> =4.a href="+code=pdev" class="sref">pdev./a>-&4 ./a> =4.4 href="+code=g" class="s4ef">g48L341" id 
L341" class="line" nam  
L341">4341./a>{ pdev./a>-&4 nam  
L34f="drivers/pinctrl/pinct4l-mxs4c#L382" id 
L3code=idxg" class="sref">idxg./a> =40; 4443./a> v14 4 0; 4342./a> v11./a> v14 4                  .a href="+code=f" class="sref">f./a>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=devmhref="drivers/pinctrl/p87">4387./a> v14 4    v14 4                             sizeof(*.a href="+code=soc" class="sref">soc./a>->.a href="+coda>} 4387./a> v14 4                          struct4.a href="+co4atform_de4ice" class="sref">platfo4m_dev4ce./a> *.a href="+codeups" class="sref">groups./a>) m4s_pin48class="line" nam  
L457">4457./a> v14 4        >)  =4.a href="+code=ders/pinctrl/pinctrl-mxs.>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=de/pinctrl-mxs.c#L428" id 
L428" class="line"soc./a> =4.a href="+code=d" class=4sref"49#L419" id 
L419" class="line.a href="+code=mxs_pinctrl_soc_data" class="sref">mxs_pinctrl_soc_vers/pinctrl/pinctr="sref">mxs_pinctrl_soc_data./a> *.a href="+code=soc" class="sref"4t;.a href4"+code=dev" class="sref"4dev./4>..a hata./a> *.a href="+code=soc" class="sref"4t./a> =4.4_node" class="sref">devi4e_nod49a> =4.a href="+code=fnull" c.a href="+code=mxs_pinctrl_soc_data" clasbasp" class="sref">baspsoc_vers/pinctrl/pinctnp.ioma" id 
L390" clasnp.ioma".c#L448" id 
L448" class="line" nam  
L448">40=soc" class="sref">soc./a>->.a href="+codef="+code4mxs_function" class="sre4">mxs4function./a> *KERNEL" class="sref"87">4387./a> v14 4   nctrl_soc_data" clasbasp" class="sref">baspsoc_                       struct4.a href="+co4compat" c4ass="sref">gpio_compat./4> =4.49a>++, .a href="+code=ups" class="sref">groupsADDRNOTAVAI) f49L384" id 
L384" class="line" nam  
L384">4384.4href="+co4e=idxf" class="sref">idx4./a> 49comment">/* Get4groups for es/pinctrl/pines"sref">mxs_pincts/pinctrl/pines"node./a> *.a href="+pnctrl/pinctrl-mxs.c#L364" id 
L364" class="lia href="+code=mxs_pinctrl_soc_data" class="sref">mxs_pinctrl_soc_ef="+code=i" class="sref">i./a>] =4.a href="+codata./a> *.a href="+code=soc" class="sref"4ttform_de4s="line" nam  
L396">4394./a> 414 4  int4.a href="+code=ret"s/pinctrl/pines"sref">mxs_pincts/pinctrl/pines"node./a> *.a href="+inctrl/pinctrl-mxs.c#L362" id 
L362" class="linia href="+code=mxs_pinctrl_soc_data" class="sref">mxs_pinctrl_soc_ef="+code=i" class="f="+code=i" class="sref">i./a>ata./a> *.a href="+code=soc" class="sref"4t=mxs_pin4.a href="+code=u32" clas4="sre49a> =4.a href="+code=fnull" cs/pinctrl/pines"sref">mxs_pincts/pinctrl/pines"node./a> *.a href="+is.c#L440" id 
L440" class="line" nam  
L440"="dris.c#L440" id 
L440="dris.ccode=f" class="sref">f./a>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=de=soc" class="sref">soc./a>->.a href="+code) ENOMEM.5ild./a>(.5 href="+code=np" class="5ref">50#L419" id 
L419" class="lineic int4.aset_drva>{ ret./a> =4.a hre87">4387./a> v14 4    soc" class="sref">soc./a>->.a href="+co5lass="lin5" nam  
L400">4400./a> v54 4  50..a hata./a> *.a href="+code=soc" class="sref"5e=dev" cl5ss="sref">dev./a>, .spa
5class50a> =4.a href="+code=fnull" ca>)) {  ret./a> =4.a hre87">4387./a> v14 4    soc" class="sref">soc./a>->.a href="+co5l3dev" cl5sxs_function" class="sre5  ret50unction./a> *KERN               ); fn./a>, .a5ef="drive5s/pinctrl/pinctrl-mxs.c#5403" 50 , &.a href="+code=val" class="s">child./a>) { 4401./a> v14 4          .a href="+code=dev_err" class="sref"dt nctrl failed: f./a>(a href="+code=p>ret./a> =4.a hre); soc./a>->.a href="+co5l5="drive5s="+code=fnull" class="s5l-mxs50>->.a href="+code=gotoret./a> =4.a hreild./a>) { soc./a>->.a href="+co5l6="drive5s=idxf" class="sref">idx5s="co5ment">/* Countcode=ENOENT" class="sref">ENOENT./a>; fn50336" id 
L336" class="line" nam  
L336">4336./5./a>(.a h5ef="+code=np" class="sre5">np.50a> =4.a href="+code=fnull" cia href="+code=mxs_pinctrl_soc_data" claspctroperty_read_u32pctr"line" nam  
L390">4390ctrl/piregisted./a>) { mxs_pincts/pinctrl/pines"noded_u32" class="sref">of>->.a href="+code=groups" class="sref">groups./a> =4.a href="+code=devm_kzalloc" class87">4387./a> v14 4    soc" class="sref">soc./a>->.a href="+co5l9a>(.a h5e="drivers/pinctrl/pinct5a hre5="+code=gpio_cKERNEL" class="sref"87">4387./a> v14 4   nctrl_soc_data" claspctroperty_read_u32pctr"linr(.a href="+code=fn" class="sref">fn./a>, .a5trl-mxs.c5L409" id 
L409" class="l5ne" n5m  
L409">4409./a> v14 4             ">child./a>) { 4401./a> v14 4          .a href="+code=dev_err" class="sref"Couldnf./9;t registed MXS ref">fn ode=fna href="+code=pdev" class="sref">pdev./a>->.a href="+co5ref="+cod5=soc" class="sref">soc./5>->5.a href="+code=ngroups"+code=fnull" ca>)) { prop./a>) /* Skigotoret./a> =4.a hreild./a>) { soc./a>->.a href="+co5.spa
 cla5s="string">"reg&quo5;./sp51n -.a href="+code=ENOENT" class="sref">ENOENT./a>; 4443./a> v14 45href="+co5e=child" class="sref">ch5ld./a51>.a href="82" class="line" nam  
L382">4382./a> -&g="line" nam  
L382">4382./a> soc./a>->5.a hr5f="+coet./a> =4.a hreild./a>) { 4382./a>  =4.a href="+code=fnull" cic int4.aset_drva>{ ret./a> =4.a hream  
L453">4453./a> v14 4                                             5ef="drive5s/pinctrl/pinctrl-mxs.c#5418" 51#L398" id 
L398" class="lineiounma" id 
L390" clasiounma"        v14 4  .a hr87">4387./a> v14 4   nctrl_soc_data" clasbasp" class="sref">baspsoc_                                           5  } ret./a>) soc./a>-&g5;.a h5ef="+ccode=ENOENT" class="sref">ENOENT./a>; functions./a>)5 .a h5ef="+class="sref">propXPORT_SYMBOL_GP) 4385./s="line" nam  
L452">4452./a85./                                               5 spa
 cla5oc" class="sref">soc./a>5>.52n -.a href="+code=ENOMEM" class="sref">ENOMEM.5 nam  
L453">4423./a> v14 4       5  ret5rn -.a385" class="line" nam  
L385">4remov/s="line" nam  
L452">4452./remov/     s86" id 
L386" class="line" nam  
L386">4386./a>static int4.a href="+code=mxs_pinctrl_probe_dt" class="sref">mxs_pi                       struct4.a href="+co5a>; fn./a>, .a5href="+co5e=soc" class="sref">soc.5a>-&g5;.a href="+cod1" class="line" nam  
L341">4341./a>{ 4390c int4.aget_drva>{ groups./a>)5 .a h52336" id 
L336" class="line" nam  
L336">4336./5.a href="5code=soc" class="sref">s5c./a>52a> =4.a href="+code=fnull" cic int4.aset_drva>{ ret./a> =4.a hream  
L453">4453./a> v14 4                                             5 nam  
L458">4428./a> v14 4       5  ret52#L398" id 
L398" class="linenctrl/piunregisted./a>) { 4387./a> v14 4   nctrl_soc_data" claspctroperty_read_u32pctr"linr                                          5a>; 4387./a> v14 4   nctrl_soc_data" clasbasp" class="sref">baspsoc_                                           5am  
L4305>4430./a> v14 4  .spa
 c5ass="53..a hata./a> *.a href="+code=soc" class="sref"514 4  .a 5ref="+code=fn" class="sr5f">fn5/a> =4.a href=82" class="line" nam  
L382">4382./a> 5uncti5ns./a>code=ENOENT" class="sref">ENOENT./a>; (.a h5ef="+code=np" class="sre5">np.5a>, .alass="sref">propXPORT_SYMBOL_GP) 4remov/s="line" nam  
L452">4452./remov/                                               5a>; child./a>, 5a hre5="+cod


The original LXR software by the http://sourcent4ge.net/projects/lxd.>LXR ne" unityref">rthis experi namal versby mailto:lxd@">cux.no">lxd@">cux.nonode. lxd.">cux.no kindly hostedsby http://www.redpill-">cpro.no">Redpill L>cpro ASref">rprovider of L>cuxring"ulting"drivtrl-ahref="serref=="s e 1995.