2014-07-09 08:59:31 +04:00
/*
* Copyright ( c ) 2014 , Sony Mobile Communications AB .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
# include <linux/module.h>
# include <linux/of.h>
# include <linux/platform_device.h>
# include <linux/pinctrl/pinctrl.h>
# include <linux/pinctrl/pinmux.h>
# include "pinctrl-msm.h"
static const struct pinctrl_pin_desc msm8960_pins [ ] = {
PINCTRL_PIN ( 0 , " GPIO_0 " ) ,
PINCTRL_PIN ( 1 , " GPIO_1 " ) ,
PINCTRL_PIN ( 2 , " GPIO_2 " ) ,
PINCTRL_PIN ( 3 , " GPIO_3 " ) ,
PINCTRL_PIN ( 4 , " GPIO_4 " ) ,
PINCTRL_PIN ( 5 , " GPIO_5 " ) ,
PINCTRL_PIN ( 6 , " GPIO_6 " ) ,
PINCTRL_PIN ( 7 , " GPIO_7 " ) ,
PINCTRL_PIN ( 8 , " GPIO_8 " ) ,
PINCTRL_PIN ( 9 , " GPIO_9 " ) ,
PINCTRL_PIN ( 10 , " GPIO_10 " ) ,
PINCTRL_PIN ( 11 , " GPIO_11 " ) ,
PINCTRL_PIN ( 12 , " GPIO_12 " ) ,
PINCTRL_PIN ( 13 , " GPIO_13 " ) ,
PINCTRL_PIN ( 14 , " GPIO_14 " ) ,
PINCTRL_PIN ( 15 , " GPIO_15 " ) ,
PINCTRL_PIN ( 16 , " GPIO_16 " ) ,
PINCTRL_PIN ( 17 , " GPIO_17 " ) ,
PINCTRL_PIN ( 18 , " GPIO_18 " ) ,
PINCTRL_PIN ( 19 , " GPIO_19 " ) ,
PINCTRL_PIN ( 20 , " GPIO_20 " ) ,
PINCTRL_PIN ( 21 , " GPIO_21 " ) ,
PINCTRL_PIN ( 22 , " GPIO_22 " ) ,
PINCTRL_PIN ( 23 , " GPIO_23 " ) ,
PINCTRL_PIN ( 24 , " GPIO_24 " ) ,
PINCTRL_PIN ( 25 , " GPIO_25 " ) ,
PINCTRL_PIN ( 26 , " GPIO_26 " ) ,
PINCTRL_PIN ( 27 , " GPIO_27 " ) ,
PINCTRL_PIN ( 28 , " GPIO_28 " ) ,
PINCTRL_PIN ( 29 , " GPIO_29 " ) ,
PINCTRL_PIN ( 30 , " GPIO_30 " ) ,
PINCTRL_PIN ( 31 , " GPIO_31 " ) ,
PINCTRL_PIN ( 32 , " GPIO_32 " ) ,
PINCTRL_PIN ( 33 , " GPIO_33 " ) ,
PINCTRL_PIN ( 34 , " GPIO_34 " ) ,
PINCTRL_PIN ( 35 , " GPIO_35 " ) ,
PINCTRL_PIN ( 36 , " GPIO_36 " ) ,
PINCTRL_PIN ( 37 , " GPIO_37 " ) ,
PINCTRL_PIN ( 38 , " GPIO_38 " ) ,
PINCTRL_PIN ( 39 , " GPIO_39 " ) ,
PINCTRL_PIN ( 40 , " GPIO_40 " ) ,
PINCTRL_PIN ( 41 , " GPIO_41 " ) ,
PINCTRL_PIN ( 42 , " GPIO_42 " ) ,
PINCTRL_PIN ( 43 , " GPIO_43 " ) ,
PINCTRL_PIN ( 44 , " GPIO_44 " ) ,
PINCTRL_PIN ( 45 , " GPIO_45 " ) ,
PINCTRL_PIN ( 46 , " GPIO_46 " ) ,
PINCTRL_PIN ( 47 , " GPIO_47 " ) ,
PINCTRL_PIN ( 48 , " GPIO_48 " ) ,
PINCTRL_PIN ( 49 , " GPIO_49 " ) ,
PINCTRL_PIN ( 50 , " GPIO_50 " ) ,
PINCTRL_PIN ( 51 , " GPIO_51 " ) ,
PINCTRL_PIN ( 52 , " GPIO_52 " ) ,
PINCTRL_PIN ( 53 , " GPIO_53 " ) ,
PINCTRL_PIN ( 54 , " GPIO_54 " ) ,
PINCTRL_PIN ( 55 , " GPIO_55 " ) ,
PINCTRL_PIN ( 56 , " GPIO_56 " ) ,
PINCTRL_PIN ( 57 , " GPIO_57 " ) ,
PINCTRL_PIN ( 58 , " GPIO_58 " ) ,
PINCTRL_PIN ( 59 , " GPIO_59 " ) ,
PINCTRL_PIN ( 60 , " GPIO_60 " ) ,
PINCTRL_PIN ( 61 , " GPIO_61 " ) ,
PINCTRL_PIN ( 62 , " GPIO_62 " ) ,
PINCTRL_PIN ( 63 , " GPIO_63 " ) ,
PINCTRL_PIN ( 64 , " GPIO_64 " ) ,
PINCTRL_PIN ( 65 , " GPIO_65 " ) ,
PINCTRL_PIN ( 66 , " GPIO_66 " ) ,
PINCTRL_PIN ( 67 , " GPIO_67 " ) ,
PINCTRL_PIN ( 68 , " GPIO_68 " ) ,
PINCTRL_PIN ( 69 , " GPIO_69 " ) ,
PINCTRL_PIN ( 70 , " GPIO_70 " ) ,
PINCTRL_PIN ( 71 , " GPIO_71 " ) ,
PINCTRL_PIN ( 72 , " GPIO_72 " ) ,
PINCTRL_PIN ( 73 , " GPIO_73 " ) ,
PINCTRL_PIN ( 74 , " GPIO_74 " ) ,
PINCTRL_PIN ( 75 , " GPIO_75 " ) ,
PINCTRL_PIN ( 76 , " GPIO_76 " ) ,
PINCTRL_PIN ( 77 , " GPIO_77 " ) ,
PINCTRL_PIN ( 78 , " GPIO_78 " ) ,
PINCTRL_PIN ( 79 , " GPIO_79 " ) ,
PINCTRL_PIN ( 80 , " GPIO_80 " ) ,
PINCTRL_PIN ( 81 , " GPIO_81 " ) ,
PINCTRL_PIN ( 82 , " GPIO_82 " ) ,
PINCTRL_PIN ( 83 , " GPIO_83 " ) ,
PINCTRL_PIN ( 84 , " GPIO_84 " ) ,
PINCTRL_PIN ( 85 , " GPIO_85 " ) ,
PINCTRL_PIN ( 86 , " GPIO_86 " ) ,
PINCTRL_PIN ( 87 , " GPIO_87 " ) ,
PINCTRL_PIN ( 88 , " GPIO_88 " ) ,
PINCTRL_PIN ( 89 , " GPIO_89 " ) ,
PINCTRL_PIN ( 90 , " GPIO_90 " ) ,
PINCTRL_PIN ( 91 , " GPIO_91 " ) ,
PINCTRL_PIN ( 92 , " GPIO_92 " ) ,
PINCTRL_PIN ( 93 , " GPIO_93 " ) ,
PINCTRL_PIN ( 94 , " GPIO_94 " ) ,
PINCTRL_PIN ( 95 , " GPIO_95 " ) ,
PINCTRL_PIN ( 96 , " GPIO_96 " ) ,
PINCTRL_PIN ( 97 , " GPIO_97 " ) ,
PINCTRL_PIN ( 98 , " GPIO_98 " ) ,
PINCTRL_PIN ( 99 , " GPIO_99 " ) ,
PINCTRL_PIN ( 100 , " GPIO_100 " ) ,
PINCTRL_PIN ( 101 , " GPIO_101 " ) ,
PINCTRL_PIN ( 102 , " GPIO_102 " ) ,
PINCTRL_PIN ( 103 , " GPIO_103 " ) ,
PINCTRL_PIN ( 104 , " GPIO_104 " ) ,
PINCTRL_PIN ( 105 , " GPIO_105 " ) ,
PINCTRL_PIN ( 106 , " GPIO_106 " ) ,
PINCTRL_PIN ( 107 , " GPIO_107 " ) ,
PINCTRL_PIN ( 108 , " GPIO_108 " ) ,
PINCTRL_PIN ( 109 , " GPIO_109 " ) ,
PINCTRL_PIN ( 110 , " GPIO_110 " ) ,
PINCTRL_PIN ( 111 , " GPIO_111 " ) ,
PINCTRL_PIN ( 112 , " GPIO_112 " ) ,
PINCTRL_PIN ( 113 , " GPIO_113 " ) ,
PINCTRL_PIN ( 114 , " GPIO_114 " ) ,
PINCTRL_PIN ( 115 , " GPIO_115 " ) ,
PINCTRL_PIN ( 116 , " GPIO_116 " ) ,
PINCTRL_PIN ( 117 , " GPIO_117 " ) ,
PINCTRL_PIN ( 118 , " GPIO_118 " ) ,
PINCTRL_PIN ( 119 , " GPIO_119 " ) ,
PINCTRL_PIN ( 120 , " GPIO_120 " ) ,
PINCTRL_PIN ( 121 , " GPIO_121 " ) ,
PINCTRL_PIN ( 122 , " GPIO_122 " ) ,
PINCTRL_PIN ( 123 , " GPIO_123 " ) ,
PINCTRL_PIN ( 124 , " GPIO_124 " ) ,
PINCTRL_PIN ( 125 , " GPIO_125 " ) ,
PINCTRL_PIN ( 126 , " GPIO_126 " ) ,
PINCTRL_PIN ( 127 , " GPIO_127 " ) ,
PINCTRL_PIN ( 128 , " GPIO_128 " ) ,
PINCTRL_PIN ( 129 , " GPIO_129 " ) ,
PINCTRL_PIN ( 130 , " GPIO_130 " ) ,
PINCTRL_PIN ( 131 , " GPIO_131 " ) ,
PINCTRL_PIN ( 132 , " GPIO_132 " ) ,
PINCTRL_PIN ( 133 , " GPIO_133 " ) ,
PINCTRL_PIN ( 134 , " GPIO_134 " ) ,
PINCTRL_PIN ( 135 , " GPIO_135 " ) ,
PINCTRL_PIN ( 136 , " GPIO_136 " ) ,
PINCTRL_PIN ( 137 , " GPIO_137 " ) ,
PINCTRL_PIN ( 138 , " GPIO_138 " ) ,
PINCTRL_PIN ( 139 , " GPIO_139 " ) ,
PINCTRL_PIN ( 140 , " GPIO_140 " ) ,
PINCTRL_PIN ( 141 , " GPIO_141 " ) ,
PINCTRL_PIN ( 142 , " GPIO_142 " ) ,
PINCTRL_PIN ( 143 , " GPIO_143 " ) ,
PINCTRL_PIN ( 144 , " GPIO_144 " ) ,
PINCTRL_PIN ( 145 , " GPIO_145 " ) ,
PINCTRL_PIN ( 146 , " GPIO_146 " ) ,
PINCTRL_PIN ( 147 , " GPIO_147 " ) ,
PINCTRL_PIN ( 148 , " GPIO_148 " ) ,
PINCTRL_PIN ( 149 , " GPIO_149 " ) ,
PINCTRL_PIN ( 150 , " GPIO_150 " ) ,
PINCTRL_PIN ( 151 , " GPIO_151 " ) ,
PINCTRL_PIN ( 152 , " SDC1_CLK " ) ,
PINCTRL_PIN ( 153 , " SDC1_CMD " ) ,
PINCTRL_PIN ( 154 , " SDC1_DATA " ) ,
PINCTRL_PIN ( 155 , " SDC3_CLK " ) ,
PINCTRL_PIN ( 156 , " SDC3_CMD " ) ,
PINCTRL_PIN ( 157 , " SDC3_DATA " ) ,
} ;
# define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
DECLARE_MSM_GPIO_PINS ( 0 ) ;
DECLARE_MSM_GPIO_PINS ( 1 ) ;
DECLARE_MSM_GPIO_PINS ( 2 ) ;
DECLARE_MSM_GPIO_PINS ( 3 ) ;
DECLARE_MSM_GPIO_PINS ( 4 ) ;
DECLARE_MSM_GPIO_PINS ( 5 ) ;
DECLARE_MSM_GPIO_PINS ( 6 ) ;
DECLARE_MSM_GPIO_PINS ( 7 ) ;
DECLARE_MSM_GPIO_PINS ( 8 ) ;
DECLARE_MSM_GPIO_PINS ( 9 ) ;
DECLARE_MSM_GPIO_PINS ( 10 ) ;
DECLARE_MSM_GPIO_PINS ( 11 ) ;
DECLARE_MSM_GPIO_PINS ( 12 ) ;
DECLARE_MSM_GPIO_PINS ( 13 ) ;
DECLARE_MSM_GPIO_PINS ( 14 ) ;
DECLARE_MSM_GPIO_PINS ( 15 ) ;
DECLARE_MSM_GPIO_PINS ( 16 ) ;
DECLARE_MSM_GPIO_PINS ( 17 ) ;
DECLARE_MSM_GPIO_PINS ( 18 ) ;
DECLARE_MSM_GPIO_PINS ( 19 ) ;
DECLARE_MSM_GPIO_PINS ( 20 ) ;
DECLARE_MSM_GPIO_PINS ( 21 ) ;
DECLARE_MSM_GPIO_PINS ( 22 ) ;
DECLARE_MSM_GPIO_PINS ( 23 ) ;
DECLARE_MSM_GPIO_PINS ( 24 ) ;
DECLARE_MSM_GPIO_PINS ( 25 ) ;
DECLARE_MSM_GPIO_PINS ( 26 ) ;
DECLARE_MSM_GPIO_PINS ( 27 ) ;
DECLARE_MSM_GPIO_PINS ( 28 ) ;
DECLARE_MSM_GPIO_PINS ( 29 ) ;
DECLARE_MSM_GPIO_PINS ( 30 ) ;
DECLARE_MSM_GPIO_PINS ( 31 ) ;
DECLARE_MSM_GPIO_PINS ( 32 ) ;
DECLARE_MSM_GPIO_PINS ( 33 ) ;
DECLARE_MSM_GPIO_PINS ( 34 ) ;
DECLARE_MSM_GPIO_PINS ( 35 ) ;
DECLARE_MSM_GPIO_PINS ( 36 ) ;
DECLARE_MSM_GPIO_PINS ( 37 ) ;
DECLARE_MSM_GPIO_PINS ( 38 ) ;
DECLARE_MSM_GPIO_PINS ( 39 ) ;
DECLARE_MSM_GPIO_PINS ( 40 ) ;
DECLARE_MSM_GPIO_PINS ( 41 ) ;
DECLARE_MSM_GPIO_PINS ( 42 ) ;
DECLARE_MSM_GPIO_PINS ( 43 ) ;
DECLARE_MSM_GPIO_PINS ( 44 ) ;
DECLARE_MSM_GPIO_PINS ( 45 ) ;
DECLARE_MSM_GPIO_PINS ( 46 ) ;
DECLARE_MSM_GPIO_PINS ( 47 ) ;
DECLARE_MSM_GPIO_PINS ( 48 ) ;
DECLARE_MSM_GPIO_PINS ( 49 ) ;
DECLARE_MSM_GPIO_PINS ( 50 ) ;
DECLARE_MSM_GPIO_PINS ( 51 ) ;
DECLARE_MSM_GPIO_PINS ( 52 ) ;
DECLARE_MSM_GPIO_PINS ( 53 ) ;
DECLARE_MSM_GPIO_PINS ( 54 ) ;
DECLARE_MSM_GPIO_PINS ( 55 ) ;
DECLARE_MSM_GPIO_PINS ( 56 ) ;
DECLARE_MSM_GPIO_PINS ( 57 ) ;
DECLARE_MSM_GPIO_PINS ( 58 ) ;
DECLARE_MSM_GPIO_PINS ( 59 ) ;
DECLARE_MSM_GPIO_PINS ( 60 ) ;
DECLARE_MSM_GPIO_PINS ( 61 ) ;
DECLARE_MSM_GPIO_PINS ( 62 ) ;
DECLARE_MSM_GPIO_PINS ( 63 ) ;
DECLARE_MSM_GPIO_PINS ( 64 ) ;
DECLARE_MSM_GPIO_PINS ( 65 ) ;
DECLARE_MSM_GPIO_PINS ( 66 ) ;
DECLARE_MSM_GPIO_PINS ( 67 ) ;
DECLARE_MSM_GPIO_PINS ( 68 ) ;
DECLARE_MSM_GPIO_PINS ( 69 ) ;
DECLARE_MSM_GPIO_PINS ( 70 ) ;
DECLARE_MSM_GPIO_PINS ( 71 ) ;
DECLARE_MSM_GPIO_PINS ( 72 ) ;
DECLARE_MSM_GPIO_PINS ( 73 ) ;
DECLARE_MSM_GPIO_PINS ( 74 ) ;
DECLARE_MSM_GPIO_PINS ( 75 ) ;
DECLARE_MSM_GPIO_PINS ( 76 ) ;
DECLARE_MSM_GPIO_PINS ( 77 ) ;
DECLARE_MSM_GPIO_PINS ( 78 ) ;
DECLARE_MSM_GPIO_PINS ( 79 ) ;
DECLARE_MSM_GPIO_PINS ( 80 ) ;
DECLARE_MSM_GPIO_PINS ( 81 ) ;
DECLARE_MSM_GPIO_PINS ( 82 ) ;
DECLARE_MSM_GPIO_PINS ( 83 ) ;
DECLARE_MSM_GPIO_PINS ( 84 ) ;
DECLARE_MSM_GPIO_PINS ( 85 ) ;
DECLARE_MSM_GPIO_PINS ( 86 ) ;
DECLARE_MSM_GPIO_PINS ( 87 ) ;
DECLARE_MSM_GPIO_PINS ( 88 ) ;
DECLARE_MSM_GPIO_PINS ( 89 ) ;
DECLARE_MSM_GPIO_PINS ( 90 ) ;
DECLARE_MSM_GPIO_PINS ( 91 ) ;
DECLARE_MSM_GPIO_PINS ( 92 ) ;
DECLARE_MSM_GPIO_PINS ( 93 ) ;
DECLARE_MSM_GPIO_PINS ( 94 ) ;
DECLARE_MSM_GPIO_PINS ( 95 ) ;
DECLARE_MSM_GPIO_PINS ( 96 ) ;
DECLARE_MSM_GPIO_PINS ( 97 ) ;
DECLARE_MSM_GPIO_PINS ( 98 ) ;
DECLARE_MSM_GPIO_PINS ( 99 ) ;
DECLARE_MSM_GPIO_PINS ( 100 ) ;
DECLARE_MSM_GPIO_PINS ( 101 ) ;
DECLARE_MSM_GPIO_PINS ( 102 ) ;
DECLARE_MSM_GPIO_PINS ( 103 ) ;
DECLARE_MSM_GPIO_PINS ( 104 ) ;
DECLARE_MSM_GPIO_PINS ( 105 ) ;
DECLARE_MSM_GPIO_PINS ( 106 ) ;
DECLARE_MSM_GPIO_PINS ( 107 ) ;
DECLARE_MSM_GPIO_PINS ( 108 ) ;
DECLARE_MSM_GPIO_PINS ( 109 ) ;
DECLARE_MSM_GPIO_PINS ( 110 ) ;
DECLARE_MSM_GPIO_PINS ( 111 ) ;
DECLARE_MSM_GPIO_PINS ( 112 ) ;
DECLARE_MSM_GPIO_PINS ( 113 ) ;
DECLARE_MSM_GPIO_PINS ( 114 ) ;
DECLARE_MSM_GPIO_PINS ( 115 ) ;
DECLARE_MSM_GPIO_PINS ( 116 ) ;
DECLARE_MSM_GPIO_PINS ( 117 ) ;
DECLARE_MSM_GPIO_PINS ( 118 ) ;
DECLARE_MSM_GPIO_PINS ( 119 ) ;
DECLARE_MSM_GPIO_PINS ( 120 ) ;
DECLARE_MSM_GPIO_PINS ( 121 ) ;
DECLARE_MSM_GPIO_PINS ( 122 ) ;
DECLARE_MSM_GPIO_PINS ( 123 ) ;
DECLARE_MSM_GPIO_PINS ( 124 ) ;
DECLARE_MSM_GPIO_PINS ( 125 ) ;
DECLARE_MSM_GPIO_PINS ( 126 ) ;
DECLARE_MSM_GPIO_PINS ( 127 ) ;
DECLARE_MSM_GPIO_PINS ( 128 ) ;
DECLARE_MSM_GPIO_PINS ( 129 ) ;
DECLARE_MSM_GPIO_PINS ( 130 ) ;
DECLARE_MSM_GPIO_PINS ( 131 ) ;
DECLARE_MSM_GPIO_PINS ( 132 ) ;
DECLARE_MSM_GPIO_PINS ( 133 ) ;
DECLARE_MSM_GPIO_PINS ( 134 ) ;
DECLARE_MSM_GPIO_PINS ( 135 ) ;
DECLARE_MSM_GPIO_PINS ( 136 ) ;
DECLARE_MSM_GPIO_PINS ( 137 ) ;
DECLARE_MSM_GPIO_PINS ( 138 ) ;
DECLARE_MSM_GPIO_PINS ( 139 ) ;
DECLARE_MSM_GPIO_PINS ( 140 ) ;
DECLARE_MSM_GPIO_PINS ( 141 ) ;
DECLARE_MSM_GPIO_PINS ( 142 ) ;
DECLARE_MSM_GPIO_PINS ( 143 ) ;
DECLARE_MSM_GPIO_PINS ( 144 ) ;
DECLARE_MSM_GPIO_PINS ( 145 ) ;
DECLARE_MSM_GPIO_PINS ( 146 ) ;
DECLARE_MSM_GPIO_PINS ( 147 ) ;
DECLARE_MSM_GPIO_PINS ( 148 ) ;
DECLARE_MSM_GPIO_PINS ( 149 ) ;
DECLARE_MSM_GPIO_PINS ( 150 ) ;
DECLARE_MSM_GPIO_PINS ( 151 ) ;
static const unsigned int sdc1_clk_pins [ ] = { 152 } ;
static const unsigned int sdc1_cmd_pins [ ] = { 153 } ;
static const unsigned int sdc1_data_pins [ ] = { 154 } ;
static const unsigned int sdc3_clk_pins [ ] = { 155 } ;
static const unsigned int sdc3_cmd_pins [ ] = { 156 } ;
static const unsigned int sdc3_data_pins [ ] = { 157 } ;
# define FUNCTION(fname) \
[ MSM_MUX_ # # fname ] = { \
. name = # fname , \
. groups = fname # # _groups , \
. ngroups = ARRAY_SIZE ( fname # # _groups ) , \
}
# define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) \
{ \
. name = " gpio " # id , \
. pins = gpio # # id # # _pins , \
. npins = ARRAY_SIZE ( gpio # # id # # _pins ) , \
. funcs = ( int [ ] ) { \
2014-07-12 05:21:24 +04:00
MSM_MUX_gpio , \
2014-07-09 08:59:31 +04:00
MSM_MUX_ # # f1 , \
MSM_MUX_ # # f2 , \
MSM_MUX_ # # f3 , \
MSM_MUX_ # # f4 , \
MSM_MUX_ # # f5 , \
MSM_MUX_ # # f6 , \
MSM_MUX_ # # f7 , \
MSM_MUX_ # # f8 , \
MSM_MUX_ # # f9 , \
MSM_MUX_ # # f10 , \
MSM_MUX_ # # f11 \
} , \
. nfuncs = 12 , \
. ctl_reg = 0x1000 + 0x10 * id , \
. io_reg = 0x1004 + 0x10 * id , \
. intr_cfg_reg = 0x1008 + 0x10 * id , \
. intr_status_reg = 0x100c + 0x10 * id , \
. intr_target_reg = 0x400 + 0x4 * id , \
. mux_bit = 2 , \
. pull_bit = 0 , \
. drv_bit = 6 , \
. oe_bit = 9 , \
. in_bit = 0 , \
. out_bit = 1 , \
. intr_enable_bit = 0 , \
. intr_status_bit = 0 , \
. intr_ack_high = 1 , \
. intr_target_bit = 0 , \
2014-09-03 20:28:16 +04:00
. intr_target_kpss_val = 4 , \
2014-07-09 08:59:31 +04:00
. intr_raw_status_bit = 3 , \
. intr_polarity_bit = 1 , \
. intr_detection_bit = 2 , \
. intr_detection_width = 1 , \
}
# define SDC_PINGROUP(pg_name, ctl, pull, drv) \
{ \
. name = # pg_name , \
. pins = pg_name # # _pins , \
. npins = ARRAY_SIZE ( pg_name # # _pins ) , \
. ctl_reg = ctl , \
. io_reg = 0 , \
. intr_cfg_reg = 0 , \
. intr_status_reg = 0 , \
. intr_target_reg = 0 , \
. mux_bit = - 1 , \
. pull_bit = pull , \
. drv_bit = drv , \
. oe_bit = - 1 , \
. in_bit = - 1 , \
. out_bit = - 1 , \
. intr_enable_bit = - 1 , \
. intr_status_bit = - 1 , \
. intr_target_bit = - 1 , \
2014-09-03 20:28:16 +04:00
. intr_target_kpss_val = - 1 , \
2014-07-09 08:59:31 +04:00
. intr_raw_status_bit = - 1 , \
. intr_polarity_bit = - 1 , \
. intr_detection_bit = - 1 , \
. intr_detection_width = - 1 , \
}
enum msm8960_functions {
MSM_MUX_audio_pcm ,
MSM_MUX_bt ,
MSM_MUX_cam_mclk0 ,
MSM_MUX_cam_mclk1 ,
MSM_MUX_cam_mclk2 ,
MSM_MUX_codec_mic_i2s ,
MSM_MUX_codec_spkr_i2s ,
MSM_MUX_ext_gps ,
MSM_MUX_fm ,
MSM_MUX_gps_blanking ,
MSM_MUX_gps_pps_in ,
MSM_MUX_gps_pps_out ,
MSM_MUX_gp_clk_0a ,
MSM_MUX_gp_clk_0b ,
MSM_MUX_gp_clk_1a ,
MSM_MUX_gp_clk_1b ,
MSM_MUX_gp_clk_2a ,
MSM_MUX_gp_clk_2b ,
MSM_MUX_gp_mn ,
MSM_MUX_gp_pdm_0a ,
MSM_MUX_gp_pdm_0b ,
MSM_MUX_gp_pdm_1a ,
MSM_MUX_gp_pdm_1b ,
MSM_MUX_gp_pdm_2a ,
MSM_MUX_gp_pdm_2b ,
2014-07-12 05:21:24 +04:00
MSM_MUX_gpio ,
2014-07-09 08:59:31 +04:00
MSM_MUX_gsbi1 ,
MSM_MUX_gsbi1_spi_cs1_n ,
MSM_MUX_gsbi1_spi_cs2a_n ,
MSM_MUX_gsbi1_spi_cs2b_n ,
MSM_MUX_gsbi1_spi_cs3_n ,
MSM_MUX_gsbi2 ,
MSM_MUX_gsbi2_spi_cs1_n ,
MSM_MUX_gsbi2_spi_cs2_n ,
MSM_MUX_gsbi2_spi_cs3_n ,
MSM_MUX_gsbi3 ,
MSM_MUX_gsbi4 ,
MSM_MUX_gsbi4_3d_cam_i2c_l ,
MSM_MUX_gsbi4_3d_cam_i2c_r ,
MSM_MUX_gsbi5 ,
MSM_MUX_gsbi5_3d_cam_i2c_l ,
MSM_MUX_gsbi5_3d_cam_i2c_r ,
MSM_MUX_gsbi6 ,
MSM_MUX_gsbi7 ,
MSM_MUX_gsbi8 ,
MSM_MUX_gsbi9 ,
MSM_MUX_gsbi10 ,
MSM_MUX_gsbi11 ,
MSM_MUX_gsbi11_spi_cs1a_n ,
MSM_MUX_gsbi11_spi_cs1b_n ,
MSM_MUX_gsbi11_spi_cs2a_n ,
MSM_MUX_gsbi11_spi_cs2b_n ,
MSM_MUX_gsbi11_spi_cs3_n ,
MSM_MUX_gsbi12 ,
MSM_MUX_hdmi_cec ,
MSM_MUX_hdmi_ddc_clock ,
MSM_MUX_hdmi_ddc_data ,
MSM_MUX_hdmi_hot_plug_detect ,
MSM_MUX_hsic ,
MSM_MUX_mdp_vsync ,
MSM_MUX_mi2s ,
MSM_MUX_mic_i2s ,
MSM_MUX_pmb_clk ,
MSM_MUX_pmb_ext_ctrl ,
MSM_MUX_ps_hold ,
MSM_MUX_rpm_wdog ,
MSM_MUX_sdc2 ,
MSM_MUX_sdc4 ,
MSM_MUX_sdc5 ,
MSM_MUX_slimbus1 ,
MSM_MUX_slimbus2 ,
MSM_MUX_spkr_i2s ,
MSM_MUX_ssbi1 ,
MSM_MUX_ssbi2 ,
MSM_MUX_ssbi_ext_gps ,
MSM_MUX_ssbi_pmic2 ,
MSM_MUX_ssbi_qpa1 ,
MSM_MUX_ssbi_ts ,
MSM_MUX_tsif1 ,
MSM_MUX_tsif2 ,
MSM_MUX_ts_eoc ,
MSM_MUX_usb_fs1 ,
MSM_MUX_usb_fs1_oe ,
MSM_MUX_usb_fs1_oe_n ,
MSM_MUX_usb_fs2 ,
MSM_MUX_usb_fs2_oe ,
MSM_MUX_usb_fs2_oe_n ,
MSM_MUX_vfe_camif_timer1_a ,
MSM_MUX_vfe_camif_timer1_b ,
MSM_MUX_vfe_camif_timer2 ,
MSM_MUX_vfe_camif_timer3_a ,
MSM_MUX_vfe_camif_timer3_b ,
MSM_MUX_vfe_camif_timer4_a ,
MSM_MUX_vfe_camif_timer4_b ,
MSM_MUX_vfe_camif_timer4_c ,
MSM_MUX_vfe_camif_timer5_a ,
MSM_MUX_vfe_camif_timer5_b ,
MSM_MUX_vfe_camif_timer6_a ,
MSM_MUX_vfe_camif_timer6_b ,
MSM_MUX_vfe_camif_timer6_c ,
MSM_MUX_vfe_camif_timer7_a ,
MSM_MUX_vfe_camif_timer7_b ,
MSM_MUX_vfe_camif_timer7_c ,
MSM_MUX_wlan ,
MSM_MUX_NA ,
} ;
static const char * const audio_pcm_groups [ ] = {
" gpio63 " , " gpio64 " , " gpio65 " , " gpio66 "
} ;
static const char * const bt_groups [ ] = {
" gpio28 " , " gpio29 " , " gpio83 "
} ;
static const char * const cam_mclk0_groups [ ] = {
" gpio5 "
} ;
static const char * const cam_mclk1_groups [ ] = {
" gpio4 "
} ;
static const char * const cam_mclk2_groups [ ] = {
" gpio2 "
} ;
static const char * const codec_mic_i2s_groups [ ] = {
" gpio54 " , " gpio55 " , " gpio56 " , " gpio57 " , " gpio58 "
} ;
static const char * const codec_spkr_i2s_groups [ ] = {
" gpio59 " , " gpio60 " , " gpio61 " , " gpio62 "
} ;
static const char * const ext_gps_groups [ ] = {
" gpio22 " , " gpio23 " , " gpio24 " , " gpio25 "
} ;
static const char * const fm_groups [ ] = {
" gpio26 " , " gpio27 "
} ;
static const char * const gps_blanking_groups [ ] = {
" gpio137 "
} ;
static const char * const gps_pps_in_groups [ ] = {
" gpio37 "
} ;
static const char * const gps_pps_out_groups [ ] = {
" gpio37 "
} ;
static const char * const gp_clk_0a_groups [ ] = {
" gpio3 "
} ;
static const char * const gp_clk_0b_groups [ ] = {
" gpio54 "
} ;
static const char * const gp_clk_1a_groups [ ] = {
" gpio4 "
} ;
static const char * const gp_clk_1b_groups [ ] = {
" gpio70 "
} ;
static const char * const gp_clk_2a_groups [ ] = {
" gpio52 "
} ;
static const char * const gp_clk_2b_groups [ ] = {
" gpio37 "
} ;
static const char * const gp_mn_groups [ ] = {
" gpio2 "
} ;
static const char * const gp_pdm_0a_groups [ ] = {
" gpio58 "
} ;
static const char * const gp_pdm_0b_groups [ ] = {
" gpio39 "
} ;
static const char * const gp_pdm_1a_groups [ ] = {
" gpio94 "
} ;
static const char * const gp_pdm_1b_groups [ ] = {
" gpio64 "
} ;
static const char * const gp_pdm_2a_groups [ ] = {
" gpio69 "
} ;
static const char * const gp_pdm_2b_groups [ ] = {
" gpio53 "
} ;
2014-07-12 05:21:24 +04:00
static const char * const gpio_groups [ ] = {
" gpio0 " , " gpio1 " , " gpio2 " , " gpio3 " , " gpio4 " , " gpio5 " , " gpio6 " , " gpio7 " ,
" gpio8 " , " gpio9 " , " gpio10 " , " gpio11 " , " gpio12 " , " gpio13 " , " gpio14 " ,
" gpio15 " , " gpio16 " , " gpio17 " , " gpio18 " , " gpio19 " , " gpio20 " , " gpio21 " ,
" gpio22 " , " gpio23 " , " gpio24 " , " gpio25 " , " gpio26 " , " gpio27 " , " gpio28 " ,
" gpio29 " , " gpio30 " , " gpio31 " , " gpio32 " , " gpio33 " , " gpio34 " , " gpio35 " ,
" gpio36 " , " gpio37 " , " gpio38 " , " gpio39 " , " gpio40 " , " gpio41 " , " gpio42 " ,
" gpio43 " , " gpio44 " , " gpio45 " , " gpio46 " , " gpio47 " , " gpio48 " , " gpio49 " ,
" gpio50 " , " gpio51 " , " gpio52 " , " gpio53 " , " gpio54 " , " gpio55 " , " gpio56 " ,
" gpio57 " , " gpio58 " , " gpio59 " , " gpio60 " , " gpio61 " , " gpio62 " , " gpio63 " ,
" gpio64 " , " gpio65 " , " gpio66 " , " gpio67 " , " gpio68 " , " gpio69 " , " gpio70 " ,
" gpio71 " , " gpio72 " , " gpio73 " , " gpio74 " , " gpio75 " , " gpio76 " , " gpio77 " ,
" gpio78 " , " gpio79 " , " gpio80 " , " gpio81 " , " gpio82 " , " gpio83 " , " gpio84 " ,
" gpio85 " , " gpio86 " , " gpio87 " , " gpio88 " , " gpio89 " , " gpio90 " , " gpio91 " ,
" gpio92 " , " gpio93 " , " gpio94 " , " gpio95 " , " gpio96 " , " gpio97 " , " gpio98 " ,
" gpio99 " , " gpio100 " , " gpio101 " , " gpio102 " , " gpio103 " , " gpio104 " ,
" gpio105 " , " gpio106 " , " gpio107 " , " gpio108 " , " gpio109 " , " gpio110 " ,
" gpio111 " , " gpio112 " , " gpio113 " , " gpio114 " , " gpio115 " , " gpio116 " ,
" gpio117 " , " gpio118 " , " gpio119 " , " gpio120 " , " gpio121 " , " gpio122 " ,
" gpio123 " , " gpio124 " , " gpio125 " , " gpio126 " , " gpio127 " , " gpio128 " ,
" gpio129 " , " gpio130 " , " gpio131 " , " gpio132 " , " gpio133 " , " gpio134 " ,
" gpio135 " , " gpio136 " , " gpio137 " , " gpio138 " , " gpio139 " , " gpio140 " ,
" gpio141 " , " gpio142 " , " gpio143 " , " gpio144 " , " gpio145 " , " gpio146 " ,
" gpio147 " , " gpio148 " , " gpio149 " , " gpio150 " , " gpio151 "
} ;
2014-07-09 08:59:31 +04:00
static const char * const gsbi1_groups [ ] = {
" gpio6 " , " gpio7 " , " gpio8 " , " gpio9 "
} ;
static const char * const gsbi1_spi_cs1_n_groups [ ] = {
" gpio14 "
} ;
static const char * const gsbi1_spi_cs2a_n_groups [ ] = {
" gpio15 "
} ;
static const char * const gsbi1_spi_cs2b_n_groups [ ] = {
" gpio17 "
} ;
static const char * const gsbi1_spi_cs3_n_groups [ ] = {
" gpio16 "
} ;
static const char * const gsbi2_groups [ ] = {
" gpio10 " , " gpio11 " , " gpio12 " , " gpio13 "
} ;
static const char * const gsbi2_spi_cs1_n_groups [ ] = {
" gpio52 "
} ;
static const char * const gsbi2_spi_cs2_n_groups [ ] = {
" gpio68 "
} ;
static const char * const gsbi2_spi_cs3_n_groups [ ] = {
" gpio56 "
} ;
static const char * const gsbi3_groups [ ] = {
" gpio14 " , " gpio15 " , " gpio16 " , " gpio17 "
} ;
static const char * const gsbi4_groups [ ] = {
" gpio18 " , " gpio19 " , " gpio20 " , " gpio21 "
} ;
static const char * const gsbi4_3d_cam_i2c_l_groups [ ] = {
" gpio18 " , " gpio19 "
} ;
static const char * const gsbi4_3d_cam_i2c_r_groups [ ] = {
" gpio20 " , " gpio21 "
} ;
static const char * const gsbi5_groups [ ] = {
" gpio22 " , " gpio23 " , " gpio24 " , " gpio25 "
} ;
static const char * const gsbi5_3d_cam_i2c_l_groups [ ] = {
" gpio22 " , " gpio23 "
} ;
static const char * const gsbi5_3d_cam_i2c_r_groups [ ] = {
" gpio24 " , " gpio25 "
} ;
static const char * const gsbi6_groups [ ] = {
" gpio26 " , " gpio27 " , " gpio28 " , " gpio29 "
} ;
static const char * const gsbi7_groups [ ] = {
" gpio30 " , " gpio31 " , " gpio32 " , " gpio33 "
} ;
static const char * const gsbi8_groups [ ] = {
" gpio34 " , " gpio35 " , " gpio36 " , " gpio37 "
} ;
static const char * const gsbi9_groups [ ] = {
" gpio93 " , " gpio94 " , " gpio95 " , " gpio96 "
} ;
static const char * const gsbi10_groups [ ] = {
" gpio71 " , " gpio72 " , " gpio73 " , " gpio74 "
} ;
static const char * const gsbi11_groups [ ] = {
" gpio38 " , " gpio39 " , " gpio40 " , " gpio41 "
} ;
static const char * const gsbi11_spi_cs1a_n_groups [ ] = {
" gpio36 "
} ;
static const char * const gsbi11_spi_cs1b_n_groups [ ] = {
" gpio18 "
} ;
static const char * const gsbi11_spi_cs2a_n_groups [ ] = {
" gpio37 "
} ;
static const char * const gsbi11_spi_cs2b_n_groups [ ] = {
" gpio19 "
} ;
static const char * const gsbi11_spi_cs3_n_groups [ ] = {
" gpio76 "
} ;
static const char * const gsbi12_groups [ ] = {
" gpio42 " , " gpio43 " , " gpio44 " , " gpio45 "
} ;
static const char * const hdmi_cec_groups [ ] = {
" gpio99 "
} ;
static const char * const hdmi_ddc_clock_groups [ ] = {
" gpio100 "
} ;
static const char * const hdmi_ddc_data_groups [ ] = {
" gpio101 "
} ;
static const char * const hdmi_hot_plug_detect_groups [ ] = {
" gpio102 "
} ;
static const char * const hsic_groups [ ] = {
" gpio150 " , " gpio151 "
} ;
static const char * const mdp_vsync_groups [ ] = {
" gpio0 " , " gpio1 " , " gpio19 "
} ;
static const char * const mi2s_groups [ ] = {
" gpio47 " , " gpio48 " , " gpio49 " , " gpio50 " , " gpio51 " , " gpio52 " , " gpio53 "
} ;
static const char * const mic_i2s_groups [ ] = {
" gpio71 " , " gpio72 " , " gpio73 " , " gpio74 "
} ;
static const char * const pmb_clk_groups [ ] = {
" gpio21 " , " gpio86 " , " gpio112 "
} ;
static const char * const pmb_ext_ctrl_groups [ ] = {
" gpio4 " , " gpio5 "
} ;
static const char * const ps_hold_groups [ ] = {
" gpio108 "
} ;
static const char * const rpm_wdog_groups [ ] = {
" gpio12 "
} ;
static const char * const sdc2_groups [ ] = {
" gpio89 " , " gpio90 " , " gpio91 " , " gpio92 " , " gpio93 " , " gpio94 " , " gpio95 " ,
" gpio96 " , " gpio97 " , " gpio98 "
} ;
static const char * const sdc4_groups [ ] = {
" gpio83 " , " gpio84 " , " gpio85 " , " gpio86 " , " gpio87 " , " gpio88 "
} ;
static const char * const sdc5_groups [ ] = {
" gpio77 " , " gpio78 " , " gpio79 " , " gpio80 " , " gpio81 " , " gpio82 "
} ;
static const char * const slimbus1_groups [ ] = {
" gpio50 " , " gpio51 " , " gpio60 " , " gpio61 "
} ;
static const char * const slimbus2_groups [ ] = {
" gpio42 " , " gpio43 "
} ;
static const char * const spkr_i2s_groups [ ] = {
" gpio67 " , " gpio68 " , " gpio69 " , " gpio70 "
} ;
static const char * const ssbi1_groups [ ] = {
" gpio141 " , " gpio143 "
} ;
static const char * const ssbi2_groups [ ] = {
" gpio140 " , " gpio142 "
} ;
static const char * const ssbi_ext_gps_groups [ ] = {
" gpio23 "
} ;
static const char * const ssbi_pmic2_groups [ ] = {
" gpio149 "
} ;
static const char * const ssbi_qpa1_groups [ ] = {
" gpio131 "
} ;
static const char * const ssbi_ts_groups [ ] = {
" gpio10 "
} ;
static const char * const tsif1_groups [ ] = {
" gpio75 " , " gpio76 " , " gpio77 " , " gpio82 "
} ;
static const char * const tsif2_groups [ ] = {
" gpio78 " , " gpio79 " , " gpio80 " , " gpio81 "
} ;
static const char * const ts_eoc_groups [ ] = {
" gpio11 "
} ;
static const char * const usb_fs1_groups [ ] = {
" gpio32 " , " gpio33 "
} ;
static const char * const usb_fs1_oe_groups [ ] = {
" gpio31 "
} ;
static const char * const usb_fs1_oe_n_groups [ ] = {
" gpio31 "
} ;
static const char * const usb_fs2_groups [ ] = {
" gpio34 " , " gpio35 "
} ;
static const char * const usb_fs2_oe_groups [ ] = {
" gpio36 "
} ;
static const char * const usb_fs2_oe_n_groups [ ] = {
" gpio36 "
} ;
static const char * const vfe_camif_timer1_a_groups [ ] = {
" gpio2 "
} ;
static const char * const vfe_camif_timer1_b_groups [ ] = {
" gpio38 "
} ;
static const char * const vfe_camif_timer2_groups [ ] = {
" gpio3 "
} ;
static const char * const vfe_camif_timer3_a_groups [ ] = {
" gpio4 "
} ;
static const char * const vfe_camif_timer3_b_groups [ ] = {
" gpio151 "
} ;
static const char * const vfe_camif_timer4_a_groups [ ] = {
" gpio65 "
} ;
static const char * const vfe_camif_timer4_b_groups [ ] = {
" gpio150 "
} ;
static const char * const vfe_camif_timer4_c_groups [ ] = {
" gpio10 "
} ;
static const char * const vfe_camif_timer5_a_groups [ ] = {
" gpio66 "
} ;
static const char * const vfe_camif_timer5_b_groups [ ] = {
" gpio39 "
} ;
static const char * const vfe_camif_timer6_a_groups [ ] = {
" gpio71 "
} ;
static const char * const vfe_camif_timer6_b_groups [ ] = {
" gpio0 "
} ;
static const char * const vfe_camif_timer6_c_groups [ ] = {
" gpio18 "
} ;
static const char * const vfe_camif_timer7_a_groups [ ] = {
" gpio67 "
} ;
static const char * const vfe_camif_timer7_b_groups [ ] = {
" gpio1 "
} ;
static const char * const vfe_camif_timer7_c_groups [ ] = {
" gpio19 "
} ;
static const char * const wlan_groups [ ] = {
" gpio84 " , " gpio85 " , " gpio86 " , " gpio87 " , " gpio88 "
} ;
static const struct msm_function msm8960_functions [ ] = {
FUNCTION ( audio_pcm ) ,
FUNCTION ( bt ) ,
FUNCTION ( cam_mclk0 ) ,
FUNCTION ( cam_mclk1 ) ,
FUNCTION ( cam_mclk2 ) ,
FUNCTION ( codec_mic_i2s ) ,
FUNCTION ( codec_spkr_i2s ) ,
FUNCTION ( ext_gps ) ,
FUNCTION ( fm ) ,
FUNCTION ( gps_blanking ) ,
FUNCTION ( gps_pps_in ) ,
FUNCTION ( gps_pps_out ) ,
FUNCTION ( gp_clk_0a ) ,
FUNCTION ( gp_clk_0b ) ,
FUNCTION ( gp_clk_1a ) ,
FUNCTION ( gp_clk_1b ) ,
FUNCTION ( gp_clk_2a ) ,
FUNCTION ( gp_clk_2b ) ,
FUNCTION ( gp_mn ) ,
FUNCTION ( gp_pdm_0a ) ,
FUNCTION ( gp_pdm_0b ) ,
FUNCTION ( gp_pdm_1a ) ,
FUNCTION ( gp_pdm_1b ) ,
FUNCTION ( gp_pdm_2a ) ,
FUNCTION ( gp_pdm_2b ) ,
2014-07-12 05:21:24 +04:00
FUNCTION ( gpio ) ,
2014-07-09 08:59:31 +04:00
FUNCTION ( gsbi1 ) ,
FUNCTION ( gsbi1_spi_cs1_n ) ,
FUNCTION ( gsbi1_spi_cs2a_n ) ,
FUNCTION ( gsbi1_spi_cs2b_n ) ,
FUNCTION ( gsbi1_spi_cs3_n ) ,
FUNCTION ( gsbi2 ) ,
FUNCTION ( gsbi2_spi_cs1_n ) ,
FUNCTION ( gsbi2_spi_cs2_n ) ,
FUNCTION ( gsbi2_spi_cs3_n ) ,
FUNCTION ( gsbi3 ) ,
FUNCTION ( gsbi4 ) ,
FUNCTION ( gsbi4_3d_cam_i2c_l ) ,
FUNCTION ( gsbi4_3d_cam_i2c_r ) ,
FUNCTION ( gsbi5 ) ,
FUNCTION ( gsbi5_3d_cam_i2c_l ) ,
FUNCTION ( gsbi5_3d_cam_i2c_r ) ,
FUNCTION ( gsbi6 ) ,
FUNCTION ( gsbi7 ) ,
FUNCTION ( gsbi8 ) ,
FUNCTION ( gsbi9 ) ,
FUNCTION ( gsbi10 ) ,
FUNCTION ( gsbi11 ) ,
FUNCTION ( gsbi11_spi_cs1a_n ) ,
FUNCTION ( gsbi11_spi_cs1b_n ) ,
FUNCTION ( gsbi11_spi_cs2a_n ) ,
FUNCTION ( gsbi11_spi_cs2b_n ) ,
FUNCTION ( gsbi11_spi_cs3_n ) ,
FUNCTION ( gsbi12 ) ,
FUNCTION ( hdmi_cec ) ,
FUNCTION ( hdmi_ddc_clock ) ,
FUNCTION ( hdmi_ddc_data ) ,
FUNCTION ( hdmi_hot_plug_detect ) ,
FUNCTION ( hsic ) ,
FUNCTION ( mdp_vsync ) ,
FUNCTION ( mi2s ) ,
FUNCTION ( mic_i2s ) ,
FUNCTION ( pmb_clk ) ,
FUNCTION ( pmb_ext_ctrl ) ,
FUNCTION ( ps_hold ) ,
FUNCTION ( rpm_wdog ) ,
FUNCTION ( sdc2 ) ,
FUNCTION ( sdc4 ) ,
FUNCTION ( sdc5 ) ,
FUNCTION ( slimbus1 ) ,
FUNCTION ( slimbus2 ) ,
FUNCTION ( spkr_i2s ) ,
FUNCTION ( ssbi1 ) ,
FUNCTION ( ssbi2 ) ,
FUNCTION ( ssbi_ext_gps ) ,
FUNCTION ( ssbi_pmic2 ) ,
FUNCTION ( ssbi_qpa1 ) ,
FUNCTION ( ssbi_ts ) ,
FUNCTION ( tsif1 ) ,
FUNCTION ( tsif2 ) ,
FUNCTION ( ts_eoc ) ,
FUNCTION ( usb_fs1 ) ,
FUNCTION ( usb_fs1_oe ) ,
FUNCTION ( usb_fs1_oe_n ) ,
FUNCTION ( usb_fs2 ) ,
FUNCTION ( usb_fs2_oe ) ,
FUNCTION ( usb_fs2_oe_n ) ,
FUNCTION ( vfe_camif_timer1_a ) ,
FUNCTION ( vfe_camif_timer1_b ) ,
FUNCTION ( vfe_camif_timer2 ) ,
FUNCTION ( vfe_camif_timer3_a ) ,
FUNCTION ( vfe_camif_timer3_b ) ,
FUNCTION ( vfe_camif_timer4_a ) ,
FUNCTION ( vfe_camif_timer4_b ) ,
FUNCTION ( vfe_camif_timer4_c ) ,
FUNCTION ( vfe_camif_timer5_a ) ,
FUNCTION ( vfe_camif_timer5_b ) ,
FUNCTION ( vfe_camif_timer6_a ) ,
FUNCTION ( vfe_camif_timer6_b ) ,
FUNCTION ( vfe_camif_timer6_c ) ,
FUNCTION ( vfe_camif_timer7_a ) ,
FUNCTION ( vfe_camif_timer7_b ) ,
FUNCTION ( vfe_camif_timer7_c ) ,
FUNCTION ( wlan ) ,
} ;
static const struct msm_pingroup msm8960_groups [ ] = {
PINGROUP ( 0 , mdp_vsync , vfe_camif_timer6_b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 1 , mdp_vsync , vfe_camif_timer7_b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 2 , vfe_camif_timer1_a , gp_mn , NA , cam_mclk2 , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 3 , vfe_camif_timer2 , gp_clk_0a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 4 , vfe_camif_timer3_a , cam_mclk1 , gp_clk_1a , pmb_ext_ctrl , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 5 , cam_mclk0 , pmb_ext_ctrl , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 6 , gsbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 7 , gsbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 8 , gsbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 9 , gsbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 10 , gsbi2 , ssbi_ts , NA , vfe_camif_timer4_c , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 11 , gsbi2 , ts_eoc , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 12 , gsbi2 , rpm_wdog , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 13 , gsbi2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 14 , gsbi3 , gsbi1_spi_cs1_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 15 , gsbi3 , gsbi1_spi_cs2a_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 16 , gsbi3 , gsbi1_spi_cs3_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 17 , gsbi3 , gsbi1_spi_cs2b_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 18 , gsbi4 , gsbi11_spi_cs1b_n , NA , NA , gsbi4_3d_cam_i2c_l , vfe_camif_timer6_c , NA , NA , NA , NA , NA ) ,
PINGROUP ( 19 , gsbi4 , gsbi11_spi_cs2b_n , NA , mdp_vsync , NA , gsbi4_3d_cam_i2c_l , vfe_camif_timer7_c , NA , NA , NA , NA ) ,
PINGROUP ( 20 , gsbi4 , gsbi4_3d_cam_i2c_r , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 21 , gsbi4 , pmb_clk , gsbi4_3d_cam_i2c_r , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 22 , gsbi5 , ext_gps , NA , NA , NA , NA , NA , NA , NA , gsbi5_3d_cam_i2c_l , NA ) ,
PINGROUP ( 23 , gsbi5 , ssbi_ext_gps , NA , NA , NA , NA , NA , NA , NA , gsbi5_3d_cam_i2c_l , NA ) ,
PINGROUP ( 24 , gsbi5 , ext_gps , NA , NA , NA , NA , NA , NA , NA , gsbi5_3d_cam_i2c_r , NA ) ,
PINGROUP ( 25 , gsbi5 , ext_gps , NA , NA , NA , NA , NA , NA , NA , gsbi5_3d_cam_i2c_r , NA ) ,
PINGROUP ( 26 , fm , gsbi6 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 27 , fm , gsbi6 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 28 , bt , gsbi6 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 29 , bt , gsbi6 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 30 , gsbi7 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 31 , gsbi7 , usb_fs1_oe , usb_fs1_oe_n , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 32 , gsbi7 , usb_fs1 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 33 , gsbi7 , usb_fs1 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 34 , gsbi8 , usb_fs2 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 35 , gsbi8 , usb_fs2 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 36 , gsbi8 , usb_fs2_oe , usb_fs2_oe_n , gsbi11_spi_cs1a_n , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 37 , gsbi8 , gps_pps_out , gps_pps_in , gsbi11_spi_cs2a_n , gp_clk_2b , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 38 , gsbi11 , NA , NA , NA , NA , NA , NA , NA , NA , vfe_camif_timer1_b , NA ) ,
PINGROUP ( 39 , gsbi11 , gp_pdm_0b , NA , NA , NA , NA , NA , NA , NA , NA , vfe_camif_timer5_b ) ,
PINGROUP ( 40 , gsbi11 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 41 , gsbi11 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 42 , gsbi12 , slimbus2 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 43 , gsbi12 , slimbus2 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 44 , gsbi12 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 45 , gsbi12 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 46 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 47 , mi2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 48 , mi2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 49 , mi2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 50 , mi2s , slimbus1 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 51 , mi2s , slimbus1 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 52 , mi2s , gp_clk_2a , gsbi2_spi_cs1_n , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 53 , mi2s , gp_pdm_2b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 54 , codec_mic_i2s , gp_clk_0b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 55 , codec_mic_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 56 , codec_mic_i2s , gsbi2_spi_cs3_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 57 , codec_mic_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 58 , codec_mic_i2s , gp_pdm_0a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 59 , codec_spkr_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 60 , slimbus1 , codec_spkr_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 61 , slimbus1 , codec_spkr_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 62 , codec_spkr_i2s , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 63 , audio_pcm , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 64 , audio_pcm , gp_pdm_1b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 65 , audio_pcm , vfe_camif_timer4_a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 66 , audio_pcm , vfe_camif_timer5_a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 67 , spkr_i2s , vfe_camif_timer7_a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 68 , spkr_i2s , gsbi2_spi_cs2_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 69 , spkr_i2s , gp_pdm_2a , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 70 , spkr_i2s , gp_clk_1b , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 71 , mic_i2s , gsbi10 , vfe_camif_timer6_a , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 72 , mic_i2s , gsbi10 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 73 , mic_i2s , gsbi10 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 74 , mic_i2s , gsbi10 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 75 , tsif1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 76 , tsif1 , gsbi11_spi_cs3_n , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 77 , tsif1 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 78 , tsif2 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 79 , tsif2 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 80 , tsif2 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 81 , tsif2 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 82 , tsif1 , sdc5 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 83 , bt , sdc4 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 84 , wlan , sdc4 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 85 , wlan , sdc4 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 86 , wlan , sdc4 , pmb_clk , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 87 , wlan , sdc4 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 88 , wlan , sdc4 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 89 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 90 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 91 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 92 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 93 , sdc2 , gsbi9 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 94 , sdc2 , gsbi9 , gp_pdm_1a , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 95 , sdc2 , gsbi9 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 96 , sdc2 , gsbi9 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 97 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 98 , sdc2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 99 , hdmi_cec , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 100 , hdmi_ddc_clock , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 101 , hdmi_ddc_data , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 102 , hdmi_hot_plug_detect , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 103 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 104 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 105 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 106 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 107 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 108 , ps_hold , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 109 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 110 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 111 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 112 , NA , pmb_clk , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 113 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 114 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 115 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 116 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 117 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 118 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 119 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 120 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 121 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 122 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 123 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 124 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 125 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 126 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 127 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 128 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 129 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 130 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 131 , NA , ssbi_qpa1 , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 132 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 133 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 134 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 135 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 136 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 137 , gps_blanking , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 138 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 139 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 140 , ssbi2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 141 , ssbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 142 , ssbi2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 143 , ssbi1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 144 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 145 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 146 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 147 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 148 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 149 , ssbi_pmic2 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 150 , hsic , NA , vfe_camif_timer4_b , NA , NA , NA , NA , NA , NA , NA , NA ) ,
PINGROUP ( 151 , hsic , NA , vfe_camif_timer3_b , NA , NA , NA , NA , NA , NA , NA , NA ) ,
SDC_PINGROUP ( sdc1_clk , 0x20a0 , 13 , 6 ) ,
SDC_PINGROUP ( sdc1_cmd , 0x20a0 , 11 , 3 ) ,
SDC_PINGROUP ( sdc1_data , 0x20a0 , 9 , 0 ) ,
SDC_PINGROUP ( sdc3_clk , 0x20a4 , 14 , 6 ) ,
SDC_PINGROUP ( sdc3_cmd , 0x20a4 , 11 , 3 ) ,
SDC_PINGROUP ( sdc3_data , 0x20a4 , 9 , 0 ) ,
} ;
# define NUM_GPIO_PINGROUPS 152
static const struct msm_pinctrl_soc_data msm8960_pinctrl = {
. pins = msm8960_pins ,
. npins = ARRAY_SIZE ( msm8960_pins ) ,
. functions = msm8960_functions ,
. nfunctions = ARRAY_SIZE ( msm8960_functions ) ,
. groups = msm8960_groups ,
. ngroups = ARRAY_SIZE ( msm8960_groups ) ,
. ngpios = NUM_GPIO_PINGROUPS ,
} ;
static int msm8960_pinctrl_probe ( struct platform_device * pdev )
{
return msm_pinctrl_probe ( pdev , & msm8960_pinctrl ) ;
}
static const struct of_device_id msm8960_pinctrl_of_match [ ] = {
{ . compatible = " qcom,msm8960-pinctrl " , } ,
{ } ,
} ;
static struct platform_driver msm8960_pinctrl_driver = {
. driver = {
. name = " msm8960-pinctrl " ,
. of_match_table = msm8960_pinctrl_of_match ,
} ,
. probe = msm8960_pinctrl_probe ,
. remove = msm_pinctrl_remove ,
} ;
static int __init msm8960_pinctrl_init ( void )
{
return platform_driver_register ( & msm8960_pinctrl_driver ) ;
}
arch_initcall ( msm8960_pinctrl_init ) ;
static void __exit msm8960_pinctrl_exit ( void )
{
platform_driver_unregister ( & msm8960_pinctrl_driver ) ;
}
module_exit ( msm8960_pinctrl_exit ) ;
MODULE_AUTHOR ( " Bjorn Andersson <bjorn.andersson@sonymobile.com> " ) ;
MODULE_DESCRIPTION ( " Qualcomm MSM8960 pinctrl driver " ) ;
MODULE_LICENSE ( " GPL v2 " ) ;
MODULE_DEVICE_TABLE ( of , msm8960_pinctrl_of_match ) ;