2012-09-13 19:41:45 +04:00
/*
* Marvell Kirkwood pinctrl driver based on mvebu pinctrl core
*
* Author : Sebastian Hesselbarth < sebastian . hesselbarth @ gmail . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*/
# include <linux/err.h>
# include <linux/init.h>
# include <linux/io.h>
# include <linux/platform_device.h>
# include <linux/clk.h>
# include <linux/of.h>
# include <linux/of_device.h>
# include <linux/pinctrl/pinctrl.h>
# include "pinctrl-mvebu.h"
2012-11-17 20:00:55 +04:00
# define V(f6180, f6190, f6192, f6281, f6282, dx4122) \
2012-09-13 19:41:45 +04:00
( ( f6180 < < 0 ) | ( f6190 < < 1 ) | ( f6192 < < 2 ) | \
2012-11-17 20:00:55 +04:00
( f6281 < < 3 ) | ( f6282 < < 4 ) | ( dx4122 < < 5 ) )
2012-09-13 19:41:45 +04:00
enum kirkwood_variant {
2012-11-17 20:00:55 +04:00
VARIANT_MV88F6180 = V ( 1 , 0 , 0 , 0 , 0 , 0 ) ,
VARIANT_MV88F6190 = V ( 0 , 1 , 0 , 0 , 0 , 0 ) ,
VARIANT_MV88F6192 = V ( 0 , 0 , 1 , 0 , 0 , 0 ) ,
VARIANT_MV88F6281 = V ( 0 , 0 , 0 , 1 , 0 , 0 ) ,
VARIANT_MV88F6282 = V ( 0 , 0 , 0 , 0 , 1 , 0 ) ,
VARIANT_MV98DX4122 = V ( 0 , 0 , 0 , 0 , 0 , 1 ) ,
2012-09-13 19:41:45 +04:00
} ;
static struct mvebu_mpp_mode mv88f6xxx_mpp_modes [ ] = {
MPP_MODE ( 0 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io2 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " cs " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 1 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io3 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " mosi " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 2 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io4 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " sck " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 3 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io5 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " miso " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 4 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io6 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " rxd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " act " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " hsync " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " ptp " , " clk " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 5 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io7 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " txd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " ptp " , " trig " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " act " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " vsync " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 6 ,
2013-01-09 01:37:04 +04:00
MPP_VAR_FUNCTION ( 0x1 , " sysrst " , " out " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " mosi " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ptp " , " trig " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 7 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " pex " , " rsto " , V ( 1 , 1 , 1 , 1 , 0 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " cs " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ptp " , " trig " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " pwm " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 8 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " twsi0 " , " sda " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " rts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " rts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " mii-1 " , " rxerr " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " prsnt " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xc , " ptp " , " clk " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " mii " , " col " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 9 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " twsi0 " , " sck " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " cts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " cts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " prsnt " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xc , " ptp " , " evreq " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " mii " , " crs " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 10 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " sck " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0 X3 , " uart0 " , " txd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " act " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xc , " ptp " , " trig " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 11 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " spi " , " miso " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart0 " , " rxd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " ptp-1 " , " evreq " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xc , " ptp-2 " , " trig " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " ptp " , " clk " , V ( 1 , 1 , 1 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " act " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 12 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " clk " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xa , " audio " , " spdifo " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " spi " , " mosi " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " twsi1 " , " sda " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 13 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " cmd " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " txd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0xa , " audio " , " rmclk " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " pwm " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 14 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " d0 " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " rxd " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " sata1 " , " prsnt " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xa , " audio " , " spdifi " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " audio-1 " , " sdi " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " mii " , " col " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 15 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " d1 " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " rts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " txd " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " sata0 " , " act " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " spi " , " cs " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 16 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " d2 " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " uart0 " , " cts " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " uart1 " , " rxd " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " sata1 " , " act " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " extclk " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " mii " , " crs " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 17 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " sdio " , " d3 " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " sata0 " , " prsnt " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xa , " sata1 " , " act " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xd , " twsi1 " , " sck " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 18 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io0 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " pex " , " clkreq " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 19 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " nand " , " io1 " , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 20 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp0 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " tx0ql " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txd0 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifi " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " act " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d0 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0xc , " mii " , " rxerr " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 21 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp1 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rx0ql " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txd1 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifi " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifo " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " act " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d1 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 22 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp2 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " tx2ql " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txd2 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifo " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " rmclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " prsnt " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d2 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 23 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp3 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rx2ql " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txd3 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " rmclk " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " bclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " prsnt " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d3 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 24 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp4 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-cs0 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxd0 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " bclk " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdo " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d4 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 25 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp5 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-sck " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxd1 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdo " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " lrclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d5 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 26 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp6 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-miso " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxd2 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " lrclk " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " mclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d6 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 27 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp7 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-mosi " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxd3 " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " mclk " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdi " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d7 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 28 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp8 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " int " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " col " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdi " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " extclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d8 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 29 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp9 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rst " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txclk " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " extclk " , V ( 0 , 0 , 0 , 0 , 0 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d9 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 30 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp10 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " pclk " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxctl " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d10 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 31 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp11 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " fs " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxclk " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d11 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 32 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp12 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " drx " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txclko " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d12 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 33 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " dtx " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txctl " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d13 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 34 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 1 , 1 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-cs1 " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " txen " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata1 " , " act " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d14 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 35 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 1 , 1 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " tx0ql " , V ( 0 , 0 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x3 , " ge1 " , " rxerr " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " sata0 " , " act " , V ( 0 , 1 , 1 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d15 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0xc , " mii " , " rxerr " , V ( 1 , 1 , 1 , 1 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 36 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp0 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-cs1 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifi " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " twsi1 " , " sda " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 37 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp1 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " tx2ql " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " spdifo " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " twsi1 " , " sck " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 38 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp2 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rx2ql " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " rmclk " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d18 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 39 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp3 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-cs0 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " bclk " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d19 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 40 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp4 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-sck " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdo " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d20 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 41 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp5 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-miso " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " lrclk " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d21 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 42 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp6 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " spi-mosi " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " mclk " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d22 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 43 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp7 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " int " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " sdi " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d23 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 44 ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 1 , 0 , 0 , 1 , 1 , 1 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp8 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rst " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
2016-07-16 18:07:04 +03:00
MPP_VAR_FUNCTION ( 0x4 , " audio " , " extclk " , V ( 1 , 0 , 0 , 1 , 1 , 0 ) ) ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0xb , " lcd " , " clk " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 45 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 1 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp9 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " pclk " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " e " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 46 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp10 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " fs " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " hsync " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 47 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp11 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " drx " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " vsync " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 48 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp12 " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " dtx " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d16 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
MPP_MODE ( 49 ,
2012-11-17 20:00:55 +04:00
MPP_VAR_FUNCTION ( 0x0 , " gpio " , NULL , V ( 0 , 0 , 0 , 1 , 0 , 1 ) ) ,
MPP_VAR_FUNCTION ( 0x0 , " gpo " , NULL , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x1 , " ts " , " mp9 " , V ( 0 , 0 , 0 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x2 , " tdm " , " rx0ql " , V ( 0 , 0 , 0 , 1 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0x5 , " ptp " , " clk " , V ( 0 , 0 , 0 , 1 , 0 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xa , " pex " , " clkreq " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ,
MPP_VAR_FUNCTION ( 0xb , " lcd " , " d17 " , V ( 0 , 0 , 0 , 0 , 1 , 0 ) ) ) ,
2012-09-13 19:41:45 +04:00
} ;
2017-01-13 14:03:15 +03:00
static const struct mvebu_mpp_ctrl mv88f6180_mpp_controls [ ] = {
2017-01-13 14:03:30 +03:00
MPP_FUNC_CTRL ( 0 , 44 , NULL , mvebu_mmio_mpp_ctrl ) ,
2012-09-13 19:41:45 +04:00
} ;
static struct pinctrl_gpio_range mv88f6180_gpio_ranges [ ] = {
2016-07-16 18:07:04 +03:00
MPP_GPIO_RANGE ( 0 , 0 , 0 , 20 ) ,
MPP_GPIO_RANGE ( 1 , 35 , 35 , 10 ) ,
2012-09-13 19:41:45 +04:00
} ;
2017-01-13 14:03:15 +03:00
static const struct mvebu_mpp_ctrl mv88f619x_mpp_controls [ ] = {
2017-01-13 14:03:30 +03:00
MPP_FUNC_CTRL ( 0 , 35 , NULL , mvebu_mmio_mpp_ctrl ) ,
2012-09-13 19:41:45 +04:00
} ;
static struct pinctrl_gpio_range mv88f619x_gpio_ranges [ ] = {
MPP_GPIO_RANGE ( 0 , 0 , 0 , 32 ) ,
MPP_GPIO_RANGE ( 1 , 32 , 32 , 4 ) ,
} ;
2017-01-13 14:03:15 +03:00
static const struct mvebu_mpp_ctrl mv88f628x_mpp_controls [ ] = {
2017-01-13 14:03:30 +03:00
MPP_FUNC_CTRL ( 0 , 49 , NULL , mvebu_mmio_mpp_ctrl ) ,
2012-09-13 19:41:45 +04:00
} ;
static struct pinctrl_gpio_range mv88f628x_gpio_ranges [ ] = {
MPP_GPIO_RANGE ( 0 , 0 , 0 , 32 ) ,
MPP_GPIO_RANGE ( 1 , 32 , 32 , 18 ) ,
} ;
static struct mvebu_pinctrl_soc_info mv88f6180_info = {
. variant = VARIANT_MV88F6180 ,
. controls = mv88f6180_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f6180_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f6180_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f6180_gpio_ranges ) ,
} ;
static struct mvebu_pinctrl_soc_info mv88f6190_info = {
. variant = VARIANT_MV88F6190 ,
. controls = mv88f619x_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f619x_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f619x_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f619x_gpio_ranges ) ,
} ;
static struct mvebu_pinctrl_soc_info mv88f6192_info = {
. variant = VARIANT_MV88F6192 ,
. controls = mv88f619x_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f619x_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f619x_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f619x_gpio_ranges ) ,
} ;
static struct mvebu_pinctrl_soc_info mv88f6281_info = {
. variant = VARIANT_MV88F6281 ,
. controls = mv88f628x_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f628x_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f628x_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f628x_gpio_ranges ) ,
} ;
static struct mvebu_pinctrl_soc_info mv88f6282_info = {
. variant = VARIANT_MV88F6282 ,
. controls = mv88f628x_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f628x_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f628x_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f628x_gpio_ranges ) ,
} ;
2012-11-17 20:00:55 +04:00
static struct mvebu_pinctrl_soc_info mv98dx4122_info = {
. variant = VARIANT_MV98DX4122 ,
. controls = mv88f628x_mpp_controls ,
. ncontrols = ARRAY_SIZE ( mv88f628x_mpp_controls ) ,
. modes = mv88f6xxx_mpp_modes ,
. nmodes = ARRAY_SIZE ( mv88f6xxx_mpp_modes ) ,
. gpioranges = mv88f628x_gpio_ranges ,
. ngpioranges = ARRAY_SIZE ( mv88f628x_gpio_ranges ) ,
} ;
2015-03-16 22:59:09 +03:00
static const struct of_device_id kirkwood_pinctrl_of_match [ ] = {
2012-09-13 19:41:45 +04:00
{ . compatible = " marvell,88f6180-pinctrl " , . data = & mv88f6180_info } ,
{ . compatible = " marvell,88f6190-pinctrl " , . data = & mv88f6190_info } ,
{ . compatible = " marvell,88f6192-pinctrl " , . data = & mv88f6192_info } ,
{ . compatible = " marvell,88f6281-pinctrl " , . data = & mv88f6281_info } ,
{ . compatible = " marvell,88f6282-pinctrl " , . data = & mv88f6282_info } ,
2012-11-17 20:00:55 +04:00
{ . compatible = " marvell,98dx4122-pinctrl " , . data = & mv98dx4122_info } ,
2012-09-13 19:41:45 +04:00
{ }
} ;
2012-12-22 01:10:23 +04:00
static int kirkwood_pinctrl_probe ( struct platform_device * pdev )
2012-09-13 19:41:45 +04:00
{
const struct of_device_id * match =
of_match_device ( kirkwood_pinctrl_of_match , & pdev - > dev ) ;
2014-01-31 04:48:48 +04:00
2017-01-13 14:03:30 +03:00
pdev - > dev . platform_data = ( void * ) match - > data ;
2014-01-31 04:48:48 +04:00
2017-01-13 14:03:30 +03:00
return mvebu_pinctrl_simple_mmio_probe ( pdev ) ;
2012-09-13 19:41:45 +04:00
}
static struct platform_driver kirkwood_pinctrl_driver = {
. driver = {
. name = " kirkwood-pinctrl " ,
2013-10-21 13:17:14 +04:00
. of_match_table = kirkwood_pinctrl_of_match ,
2012-09-13 19:41:45 +04:00
} ,
. probe = kirkwood_pinctrl_probe ,
} ;
2017-02-06 11:03:50 +03:00
builtin_platform_driver ( kirkwood_pinctrl_driver ) ;