1*5b03aba6SOleksandr Tymoshenko /* 2*5b03aba6SOleksandr Tymoshenko * Copyright (c) 2010 3*5b03aba6SOleksandr Tymoshenko * Ben Gray <ben.r.gray@gmail.com>. 4*5b03aba6SOleksandr Tymoshenko * All rights reserved. 5*5b03aba6SOleksandr Tymoshenko * 6*5b03aba6SOleksandr Tymoshenko * Redistribution and use in source and binary forms, with or without 7*5b03aba6SOleksandr Tymoshenko * modification, are permitted provided that the following conditions 8*5b03aba6SOleksandr Tymoshenko * are met: 9*5b03aba6SOleksandr Tymoshenko * 1. Redistributions of source code must retain the above copyright 10*5b03aba6SOleksandr Tymoshenko * notice, this list of conditions and the following disclaimer. 11*5b03aba6SOleksandr Tymoshenko * 2. Redistributions in binary form must reproduce the above copyright 12*5b03aba6SOleksandr Tymoshenko * notice, this list of conditions and the following disclaimer in the 13*5b03aba6SOleksandr Tymoshenko * documentation and/or other materials provided with the distribution. 14*5b03aba6SOleksandr Tymoshenko * 3. All advertising materials mentioning features or use of this software 15*5b03aba6SOleksandr Tymoshenko * must display the following acknowledgement: 16*5b03aba6SOleksandr Tymoshenko * This product includes software developed by Ben Gray. 17*5b03aba6SOleksandr Tymoshenko * 4. The name of the company nor the name of the author may be used to 18*5b03aba6SOleksandr Tymoshenko * endorse or promote products derived from this software without specific 19*5b03aba6SOleksandr Tymoshenko * prior written permission. 20*5b03aba6SOleksandr Tymoshenko * 21*5b03aba6SOleksandr Tymoshenko * THIS SOFTWARE IS PROVIDED BY BEN GRAY ``AS IS'' AND ANY EXPRESS OR 22*5b03aba6SOleksandr Tymoshenko * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23*5b03aba6SOleksandr Tymoshenko * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24*5b03aba6SOleksandr Tymoshenko * IN NO EVENT SHALL BEN GRAY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25*5b03aba6SOleksandr Tymoshenko * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26*5b03aba6SOleksandr Tymoshenko * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27*5b03aba6SOleksandr Tymoshenko * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28*5b03aba6SOleksandr Tymoshenko * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29*5b03aba6SOleksandr Tymoshenko * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 30*5b03aba6SOleksandr Tymoshenko * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*5b03aba6SOleksandr Tymoshenko */ 32*5b03aba6SOleksandr Tymoshenko 33*5b03aba6SOleksandr Tymoshenko /** 34*5b03aba6SOleksandr Tymoshenko * Functions to configure the PIN multiplexing on the chip. 35*5b03aba6SOleksandr Tymoshenko * 36*5b03aba6SOleksandr Tymoshenko * This is different from the GPIO module in that it is used to configure the 37*5b03aba6SOleksandr Tymoshenko * pins between modules not just GPIO input output. 38*5b03aba6SOleksandr Tymoshenko * 39*5b03aba6SOleksandr Tymoshenko */ 40*5b03aba6SOleksandr Tymoshenko #ifndef _TI_PINMUX_H_ 41*5b03aba6SOleksandr Tymoshenko #define _TI_PINMUX_H_ 42*5b03aba6SOleksandr Tymoshenko 43*5b03aba6SOleksandr Tymoshenko struct ti_pinmux_padconf { 44*5b03aba6SOleksandr Tymoshenko uint16_t reg_off; 45*5b03aba6SOleksandr Tymoshenko uint16_t gpio_pin; 46*5b03aba6SOleksandr Tymoshenko uint16_t gpio_mode; 47*5b03aba6SOleksandr Tymoshenko const char *ballname; 48*5b03aba6SOleksandr Tymoshenko const char *muxmodes[8]; 49*5b03aba6SOleksandr Tymoshenko }; 50*5b03aba6SOleksandr Tymoshenko 51*5b03aba6SOleksandr Tymoshenko struct ti_pinmux_padstate { 52*5b03aba6SOleksandr Tymoshenko const char *state; 53*5b03aba6SOleksandr Tymoshenko uint16_t reg; 54*5b03aba6SOleksandr Tymoshenko }; 55*5b03aba6SOleksandr Tymoshenko 56*5b03aba6SOleksandr Tymoshenko struct ti_pinmux_device { 57*5b03aba6SOleksandr Tymoshenko uint16_t padconf_muxmode_mask; 58*5b03aba6SOleksandr Tymoshenko uint16_t padconf_sate_mask; 59*5b03aba6SOleksandr Tymoshenko const struct ti_pinmux_padstate *padstate; 60*5b03aba6SOleksandr Tymoshenko const struct ti_pinmux_padconf *padconf; 61*5b03aba6SOleksandr Tymoshenko }; 62*5b03aba6SOleksandr Tymoshenko 63*5b03aba6SOleksandr Tymoshenko struct ti_pinmux_softc { 64*5b03aba6SOleksandr Tymoshenko device_t sc_dev; 65*5b03aba6SOleksandr Tymoshenko struct resource * sc_res[4]; 66*5b03aba6SOleksandr Tymoshenko bus_space_tag_t sc_bst; 67*5b03aba6SOleksandr Tymoshenko bus_space_handle_t sc_bsh; 68*5b03aba6SOleksandr Tymoshenko }; 69*5b03aba6SOleksandr Tymoshenko 70*5b03aba6SOleksandr Tymoshenko int ti_pinmux_padconf_set(const char *padname, const char *muxmode, 71*5b03aba6SOleksandr Tymoshenko unsigned int state); 72*5b03aba6SOleksandr Tymoshenko int ti_pinmux_padconf_get(const char *padname, const char **muxmode, 73*5b03aba6SOleksandr Tymoshenko unsigned int *state); 74*5b03aba6SOleksandr Tymoshenko int ti_pinmux_padconf_set_gpiomode(uint32_t gpio, unsigned int state); 75*5b03aba6SOleksandr Tymoshenko int ti_pinmux_padconf_get_gpiomode(uint32_t gpio, unsigned int *state); 76*5b03aba6SOleksandr Tymoshenko 77*5b03aba6SOleksandr Tymoshenko #endif /* _TI_SCM_H_ */ 78