/* Copyright (c) 2012, The Linux Foundation. All rights reserved. * * 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 #include #include #include #include static struct gpiomux_setting gpio_uart_config = { .func = GPIOMUX_FUNC_2, .drv = GPIOMUX_DRV_16MA, .pull = GPIOMUX_PULL_NONE, .dir = GPIOMUX_OUT_HIGH, }; static struct gpiomux_setting gpio_spi_cs_config = { .func = GPIOMUX_FUNC_9, .drv = GPIOMUX_DRV_12MA, .pull = GPIOMUX_PULL_NONE, }; static struct gpiomux_setting gpio_spi_config = { .func = GPIOMUX_FUNC_2, .drv = GPIOMUX_DRV_12MA, .pull = GPIOMUX_PULL_NONE, }; static struct msm_gpiomux_config msm_blsp_configs[] __initdata = { { .gpio = 45, /* BLSP1 UART TX */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_uart_config, }, }, { .gpio = 46, /* BLSP1 UART RX */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_uart_config, }, }, { .gpio = 69, /* BLSP6 QUP SPI_CS_N */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_spi_cs_config, }, }, { .gpio = 20, /* BLSP6 QUP SPI_DATA_MOSI */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_spi_config, }, }, { .gpio = 21, /* BLSP6 QUP SPI_DATA_MISO */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_spi_config, }, }, { .gpio = 23, /* BLSP6 QUP SPI_CLK */ .settings = { [GPIOMUX_SUSPENDED] = &gpio_spi_config, }, }, }; void __init msm9625_init_gpiomux(void) { int rc; rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm9625_init_gpiomux failed %d\n", rc); return; } msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); }