aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorRongjun Ying <rongjun.ying@csr.com>2014-08-18 04:49:24 -0400
committerLinus Walleij <linus.walleij@linaro.org>2014-08-29 02:42:13 -0400
commit086b8904b42a20983757fc21895d692f84e0af32 (patch)
tree5d18f351c1ccef18923384c31a1fb2e86cb078fb /drivers/pinctrl
parented36c1a06fc73cab289f66cc60b935951f4a1fa0 (diff)
pinctrl: atlas6: Add I2S external clock input pingroup
The I2S controller can use the external clock as reference clock with master mode. But based on different hardware or software design, this external clock might be needed or not needed. So the external input pin can be an independent pinctrl group, and the card driver can decice to get it or not. Signed-off-by: Rongjun Ying <rongjun.ying@csr.com> Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/sirf/pinctrl-atlas6.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/pinctrl/sirf/pinctrl-atlas6.c b/drivers/pinctrl/sirf/pinctrl-atlas6.c
index 9cc8faf56a6e..45f8391ddb34 100644
--- a/drivers/pinctrl/sirf/pinctrl-atlas6.c
+++ b/drivers/pinctrl/sirf/pinctrl-atlas6.c
@@ -394,6 +394,23 @@ static const struct sirfsoc_padmux i2s_mclk_padmux = {
394 394
395static const unsigned i2s_mclk_pins[] = { 42 }; 395static const unsigned i2s_mclk_pins[] = { 42 };
396 396
397static const struct sirfsoc_muxmask i2s_ext_clk_input_muxmask[] = {
398 {
399 .group = 1,
400 .mask = BIT(19),
401 },
402};
403
404static const struct sirfsoc_padmux i2s_ext_clk_input_padmux = {
405 .muxmask_counts = ARRAY_SIZE(i2s_ext_clk_input_muxmask),
406 .muxmask = i2s_ext_clk_input_muxmask,
407 .ctrlreg = SIRFSOC_RSC_PIN_MUX,
408 .funcmask = BIT(2),
409 .funcval = BIT(2),
410};
411
412static const unsigned i2s_ext_clk_input_pins[] = { 51 };
413
397static const struct sirfsoc_muxmask i2s_muxmask[] = { 414static const struct sirfsoc_muxmask i2s_muxmask[] = {
398 { 415 {
399 .group = 3, 416 .group = 3,
@@ -982,6 +999,7 @@ static const struct sirfsoc_pin_group sirfsoc_pin_groups[] = {
982 SIRFSOC_PIN_GROUP("uart1_route_io_usb1grp", uart1_route_io_usb1_pins), 999 SIRFSOC_PIN_GROUP("uart1_route_io_usb1grp", uart1_route_io_usb1_pins),
983 SIRFSOC_PIN_GROUP("pulse_countgrp", pulse_count_pins), 1000 SIRFSOC_PIN_GROUP("pulse_countgrp", pulse_count_pins),
984 SIRFSOC_PIN_GROUP("i2smclkgrp", i2s_mclk_pins), 1001 SIRFSOC_PIN_GROUP("i2smclkgrp", i2s_mclk_pins),
1002 SIRFSOC_PIN_GROUP("i2s_ext_clk_inputgrp", i2s_ext_clk_input_pins),
985 SIRFSOC_PIN_GROUP("i2sgrp", i2s_pins), 1003 SIRFSOC_PIN_GROUP("i2sgrp", i2s_pins),
986 SIRFSOC_PIN_GROUP("i2s_no_dingrp", i2s_no_din_pins), 1004 SIRFSOC_PIN_GROUP("i2s_no_dingrp", i2s_no_din_pins),
987 SIRFSOC_PIN_GROUP("i2s_6chngrp", i2s_6chn_pins), 1005 SIRFSOC_PIN_GROUP("i2s_6chngrp", i2s_6chn_pins),
@@ -1035,6 +1053,7 @@ static const char * const
1035 uart1_route_io_usb1grp[] = { "uart1_route_io_usb1grp" }; 1053 uart1_route_io_usb1grp[] = { "uart1_route_io_usb1grp" };
1036static const char * const pulse_countgrp[] = { "pulse_countgrp" }; 1054static const char * const pulse_countgrp[] = { "pulse_countgrp" };
1037static const char * const i2smclkgrp[] = { "i2smclkgrp" }; 1055static const char * const i2smclkgrp[] = { "i2smclkgrp" };
1056static const char * const i2s_ext_clk_inputgrp[] = { "i2s_ext_clk_inputgrp" };
1038static const char * const i2sgrp[] = { "i2sgrp" }; 1057static const char * const i2sgrp[] = { "i2sgrp" };
1039static const char * const i2s_no_dingrp[] = { "i2s_no_dingrp" }; 1058static const char * const i2s_no_dingrp[] = { "i2s_no_dingrp" };
1040static const char * const i2s_6chngrp[] = { "i2s_6chngrp" }; 1059static const char * const i2s_6chngrp[] = { "i2s_6chngrp" };
@@ -1096,6 +1115,8 @@ static const struct sirfsoc_pmx_func sirfsoc_pmx_functions[] = {
1096 uart1_route_io_usb1grp, uart1_route_io_usb1_padmux), 1115 uart1_route_io_usb1grp, uart1_route_io_usb1_padmux),
1097 SIRFSOC_PMX_FUNCTION("pulse_count", pulse_countgrp, pulse_count_padmux), 1116 SIRFSOC_PMX_FUNCTION("pulse_count", pulse_countgrp, pulse_count_padmux),
1098 SIRFSOC_PMX_FUNCTION("i2s_mclk", i2smclkgrp, i2s_mclk_padmux), 1117 SIRFSOC_PMX_FUNCTION("i2s_mclk", i2smclkgrp, i2s_mclk_padmux),
1118 SIRFSOC_PMX_FUNCTION("i2s_ext_clk_input", i2s_ext_clk_inputgrp,
1119 i2s_ext_clk_input_padmux),
1099 SIRFSOC_PMX_FUNCTION("i2s", i2sgrp, i2s_padmux), 1120 SIRFSOC_PMX_FUNCTION("i2s", i2sgrp, i2s_padmux),
1100 SIRFSOC_PMX_FUNCTION("i2s_no_din", i2s_no_dingrp, i2s_no_din_padmux), 1121 SIRFSOC_PMX_FUNCTION("i2s_no_din", i2s_no_dingrp, i2s_no_din_padmux),
1101 SIRFSOC_PMX_FUNCTION("i2s_6chn", i2s_6chngrp, i2s_6chn_padmux), 1122 SIRFSOC_PMX_FUNCTION("i2s_6chn", i2s_6chngrp, i2s_6chn_padmux),