text: /* Copyright (c) 2015-2016 The Linux Foundation. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are
   * met:
   *     * Redistributions of source code must retain the above copyright
   *       notice, this list of conditions and the following disclaimer.
   *     * Redistributions in binary form must reproduce the above
   *       copyright notice, this list of conditions and the following
   *       disclaimer in the documentation and/or other materials provided
   *       with the distribution.
   *     * Neither the name of The Linux Foundation nor the names of its
   *       contributors may be used to endorse or promote products derived
   *       from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
   * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  #ifndef __PLATFORM_MDM9607_GPIO_H
  #define __PLATFORM_MDM9607_GPIO_H
  
  #include <bits.h>
  #include <gpio.h>
  
  /* GPIO TLMM: Direction */
  #define GPIO_INPUT      0
  #define GPIO_OUTPUT     1
  
  /* GPIO TLMM: Pullup/Pulldown */
  #define GPIO_NO_PULL    0
  #define GPIO_PULL_DOWN  1
  #define GPIO_KEEPER     2
  #define GPIO_PULL_UP    3
  
  /* GPIO TLMM: Drive Strength */
  #define GPIO_2MA        0
  #define GPIO_4MA        1
  #define GPIO_6MA        2
  #define GPIO_8MA        3
  #define GPIO_10MA       4
  #define GPIO_12MA       5
  #define GPIO_14MA       6
  #define GPIO_16MA       7
  
  /* GPIO TLMM: Status */
  #define GPIO_ENABLE     0
  #define GPIO_DISABLE    1
  
  /* GPIO_IN_OUT register shifts. */
  #define GPIO_IN         BIT(0)
  #define GPIO_OUT        BIT(1)
  
  void gpio_config_uart_dm(uint8_t id);
  uint32_t gpio_status(uint32_t gpio);
  void gpio_set_val(uint32_t gpio, uint32_t val);
  void gpio_tlmm_config(uint32_t gpio,
  			uint8_t func,
  			uint8_t dir,
  			uint8_t pull,
  			uint8_t drvstr,
  			uint32_t enable);
  #endif
  