1*e5f495d1SPrafulla Wadaskar /* 2*e5f495d1SPrafulla Wadaskar * (C) Copyright 2010 3*e5f495d1SPrafulla Wadaskar * Marvell Semiconductor <www.marvell.com> 4*e5f495d1SPrafulla Wadaskar * Written-by: Prafulla Wadaskar <prafulla@marvell.com> 5*e5f495d1SPrafulla Wadaskar * 6*e5f495d1SPrafulla Wadaskar * See file CREDITS for list of people who contributed to this 7*e5f495d1SPrafulla Wadaskar * project. 8*e5f495d1SPrafulla Wadaskar * 9*e5f495d1SPrafulla Wadaskar * This program is free software; you can redistribute it and/or 10*e5f495d1SPrafulla Wadaskar * modify it under the terms of the GNU General Public License as 11*e5f495d1SPrafulla Wadaskar * published by the Free Software Foundation; either version 2 of 12*e5f495d1SPrafulla Wadaskar * the License, or (at your option) any later version. 13*e5f495d1SPrafulla Wadaskar * 14*e5f495d1SPrafulla Wadaskar * This program is distributed in the hope that it will be useful, 15*e5f495d1SPrafulla Wadaskar * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*e5f495d1SPrafulla Wadaskar * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*e5f495d1SPrafulla Wadaskar * GNU General Public License for more details. 18*e5f495d1SPrafulla Wadaskar * 19*e5f495d1SPrafulla Wadaskar * You should have received a copy of the GNU General Public License 20*e5f495d1SPrafulla Wadaskar * along with this program; if not, write to the Free Software 21*e5f495d1SPrafulla Wadaskar * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 22*e5f495d1SPrafulla Wadaskar * MA 02110-1301 USA 23*e5f495d1SPrafulla Wadaskar */ 24*e5f495d1SPrafulla Wadaskar 25*e5f495d1SPrafulla Wadaskar #ifndef __MVMFP_H 26*e5f495d1SPrafulla Wadaskar #define __MVMFP_H 27*e5f495d1SPrafulla Wadaskar 28*e5f495d1SPrafulla Wadaskar /* 29*e5f495d1SPrafulla Wadaskar * Header file for MultiFunctionPin (MFP) Configururation framework 30*e5f495d1SPrafulla Wadaskar * 31*e5f495d1SPrafulla Wadaskar * Processors Supported: 32*e5f495d1SPrafulla Wadaskar * 1. Marvell ARMADA100 Processors 33*e5f495d1SPrafulla Wadaskar * 34*e5f495d1SPrafulla Wadaskar * processor to be supported should be added here 35*e5f495d1SPrafulla Wadaskar */ 36*e5f495d1SPrafulla Wadaskar 37*e5f495d1SPrafulla Wadaskar /* 38*e5f495d1SPrafulla Wadaskar * MFP configuration is represented by a 32-bit unsigned integer 39*e5f495d1SPrafulla Wadaskar */ 40*e5f495d1SPrafulla Wadaskar #define MFP(_off, _pull, _pF, _drv, _dF, _edge, _eF, _afn, _aF) ( \ 41*e5f495d1SPrafulla Wadaskar /* bits 31..16 - MFP Register Offset */ (((_off) & 0xffff) << 16) | \ 42*e5f495d1SPrafulla Wadaskar /* bits 15..13 - Run Mode Pull State */ (((_pull) & 0x7) << 13) | \ 43*e5f495d1SPrafulla Wadaskar /* bit 12 - Unused */ \ 44*e5f495d1SPrafulla Wadaskar /* bits 11..10 - Driver Strength */ (((_drv) & 0x3) << 10) | \ 45*e5f495d1SPrafulla Wadaskar /* bit 09 - Pull State flag */ (((_pF) & 0x1) << 9) | \ 46*e5f495d1SPrafulla Wadaskar /* bit 08 - Drv-strength flag */ (((_dF) & 0x1) << 8) | \ 47*e5f495d1SPrafulla Wadaskar /* bit 07 - Edge-det flag */ (((_eF) & 0x1) << 7) | \ 48*e5f495d1SPrafulla Wadaskar /* bits 06..04 - Edge Detection */ (((_edge) & 0x7) << 4) | \ 49*e5f495d1SPrafulla Wadaskar /* bits 03..00 - Alt-fun flag */ (((_aF) & 0x1) << 3) | \ 50*e5f495d1SPrafulla Wadaskar /* bits Alternate-fun select */ ((_afn) & 0x7)) 51*e5f495d1SPrafulla Wadaskar 52*e5f495d1SPrafulla Wadaskar /* 53*e5f495d1SPrafulla Wadaskar * to facilitate the definition, the following macros are provided 54*e5f495d1SPrafulla Wadaskar * 55*e5f495d1SPrafulla Wadaskar * offset, pull,pF, drv,dF, edge,eF ,afn,aF 56*e5f495d1SPrafulla Wadaskar */ 57*e5f495d1SPrafulla Wadaskar #define MFP_OFFSET_MASK MFP(0xffff, 0,0, 0,0, 0,0, 0,0) 58*e5f495d1SPrafulla Wadaskar #define MFP_REG(x) MFP(x, 0,0, 0,0, 0,0, 0,0) 59*e5f495d1SPrafulla Wadaskar #define MFP_REG_GET_OFFSET(x) ((x & MFP_OFFSET_MASK) >> 16) 60*e5f495d1SPrafulla Wadaskar 61*e5f495d1SPrafulla Wadaskar #define MFP_AF_FLAG MFP(0x0000, 0,0, 0,0, 0,0, 0,1) 62*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_FLAG MFP(0x0000, 0,0, 0,1, 0,0, 0,0) 63*e5f495d1SPrafulla Wadaskar #define MFP_EDGE_FLAG MFP(0x0000, 0,0, 0,0, 0,1, 0,0) 64*e5f495d1SPrafulla Wadaskar #define MFP_PULL_FLAG MFP(0x0000, 0,1, 0,0, 0,0, 0,0) 65*e5f495d1SPrafulla Wadaskar 66*e5f495d1SPrafulla Wadaskar #define MFP_AF0 MFP(0x0000, 0,0, 0,0, 0,0, 0,1) 67*e5f495d1SPrafulla Wadaskar #define MFP_AF1 MFP(0x0000, 0,0, 0,0, 0,0, 1,1) 68*e5f495d1SPrafulla Wadaskar #define MFP_AF2 MFP(0x0000, 0,0, 0,0, 0,0, 2,1) 69*e5f495d1SPrafulla Wadaskar #define MFP_AF3 MFP(0x0000, 0,0, 0,0, 0,0, 3,1) 70*e5f495d1SPrafulla Wadaskar #define MFP_AF4 MFP(0x0000, 0,0, 0,0, 0,0, 4,1) 71*e5f495d1SPrafulla Wadaskar #define MFP_AF5 MFP(0x0000, 0,0, 0,0, 0,0, 5,1) 72*e5f495d1SPrafulla Wadaskar #define MFP_AF6 MFP(0x0000, 0,0, 0,0, 0,0, 6,1) 73*e5f495d1SPrafulla Wadaskar #define MFP_AF7 MFP(0x0000, 0,0, 0,0, 0,0, 7,1) 74*e5f495d1SPrafulla Wadaskar #define MFP_AF_MASK MFP(0x0000, 0,0, 0,0, 0,0, 7,0) 75*e5f495d1SPrafulla Wadaskar 76*e5f495d1SPrafulla Wadaskar #define MFP_LPM_EDGE_NONE MFP(0x0000, 0,0, 0,0, 0,1, 0,0) 77*e5f495d1SPrafulla Wadaskar #define MFP_LPM_EDGE_RISE MFP(0x0000, 0,0, 0,0, 1,1, 0,0) 78*e5f495d1SPrafulla Wadaskar #define MFP_LPM_EDGE_FALL MFP(0x0000, 0,0, 0,0, 2,1, 0,0) 79*e5f495d1SPrafulla Wadaskar #define MFP_LPM_EDGE_BOTH MFP(0x0000, 0,0, 0,0, 3,1, 0,0) 80*e5f495d1SPrafulla Wadaskar #define MFP_LPM_EDGE_MASK MFP(0x0000, 0,0, 0,0, 3,0, 0,0) 81*e5f495d1SPrafulla Wadaskar 82*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_VERY_SLOW MFP(0x0000, 0,0, 0,1, 0,0, 0,0) 83*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_SLOW MFP(0x0000, 0,0, 1,1, 0,0, 0,0) 84*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_MEDIUM MFP(0x0000, 0,0, 2,1, 0,0, 0,0) 85*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_FAST MFP(0x0000, 0,0, 3,1, 0,0, 0,0) 86*e5f495d1SPrafulla Wadaskar #define MFP_DRIVE_MASK MFP(0x0000, 0,0, 3,0, 0,0, 0,0) 87*e5f495d1SPrafulla Wadaskar 88*e5f495d1SPrafulla Wadaskar #define MFP_PULL_NONE MFP(0x0000, 0,1, 0,0, 0,0, 0,0) 89*e5f495d1SPrafulla Wadaskar #define MFP_PULL_LOW MFP(0x0000, 1,1, 0,0, 0,0, 0,0) 90*e5f495d1SPrafulla Wadaskar #define MFP_PULL_HIGH MFP(0x0000, 2,1, 0,0, 0,0, 0,0) 91*e5f495d1SPrafulla Wadaskar #define MFP_PULL_BOTH MFP(0x0000, 3,1, 0,0, 0,0, 0,0) 92*e5f495d1SPrafulla Wadaskar #define MFP_PULL_FLOAT MFP(0x0000, 4,1, 0,0, 0,0, 0,0) 93*e5f495d1SPrafulla Wadaskar #define MFP_PULL_MASK MFP(0x0000, 7,0, 0,0, 0,0, 0,0) 94*e5f495d1SPrafulla Wadaskar 95*e5f495d1SPrafulla Wadaskar #define MFP_EOC 0xffffffff /* indicates end-of-conf */ 96*e5f495d1SPrafulla Wadaskar 97*e5f495d1SPrafulla Wadaskar /* Functions */ 98*e5f495d1SPrafulla Wadaskar void mfp_config(u32 *mfp_cfgs); 99*e5f495d1SPrafulla Wadaskar 100*e5f495d1SPrafulla Wadaskar #endif /* __MVMFP_H */ 101