blob: 179301a27bee7438812042c3271ff2e115e44953 [file] [log] [blame]
/*
* Copyright (C) 2018 Synaptics Incorporated. 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 as
* published by the Free Software Foundation.
*
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND
* SYNAPTICS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE, AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY
* INTELLECTUAL PROPERTY RIGHTS. IN NO EVENT SHALL SYNAPTICS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR
* CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE
* OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED AND
* BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF
* COMPETENT JURISDICTION DOES NOT PERMIT THE DISCLAIMER OF DIRECT
* DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS' TOTAL CUMULATIVE LIABILITY
* TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S. DOLLARS.
*/
#include "Galois_memmap.h"
#include "global.h"
#include "pinmux.h"
#include "gpio.h"
#include "io.h"
#include "SysMgr.h"
#include "apbRegBase.h"
#include "board_config.h"
#include "util.h"
#include "lgpl_printf.h"
#define RA_SET_BITS_GENERIC(ra_base, ra_name, ra_class, bf_name, val) \
io32_set_bits(ra_base + RA_##ra_name, val, LSb32##ra_class##_##bf_name, b##ra_class##_##bf_name)
#define RA_SET_BITS_SIMPLE(ra_base, ra_name, bf_name, val) RA_SET_BITS_GENERIC(ra_base, ra_name, ra_name, bf_name, val)
#define SOC_SET_PINMUX(ra_name, bf_name, val) RA_SET_BITS_GENERIC(MEMMAP_CHIP_CTRL_REG_BASE, ra_name, Gbl_pinMuxCntlBus, bf_name, val)
#define SM_SET_PINMUX(ra_name, bf_name, val) RA_SET_BITS_GENERIC(SOC_SM_SYS_CTRL_REG_BASE, ra_name, smSysCtl_smPinMuxCntlBus, bf_name, val)
void pin_init(void)
{
GPIO_PortSetInOut(5, 1); //TOUCH_IRQ_L Input, active low
GPIO_PortSetInOut(11, 1); //MIC_MUTE_STATUS Input, active high
GPIO_PortWrite(17, 0); //AMP_EN Output, active high, default=inactive low
GPIO_PortSetInOut(41, 1); //PP1350_DDR_FB_33 HiZ, default=HiZ
GPIO_PortWrite(63, 0); //WLAN_EN Output, active high, default=inactive low
// reset the peripherals for 20ms, no i2c commands allowed during the reset pulse
// Set PER_RST_L output low
GPIO_PortWrite(4, 0);
// Wait 20ms
berlin_delay_us(20000);
// Set PER_RST_L output high
GPIO_PortWrite(4, 1);
// enable WLAN and amplifier
// Set WLAN_EN output high
GPIO_PortWrite(63, 1);
// Enable SDIO internal pull up
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_DAT0Cntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_DAT1Cntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_CLKCntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_DAT2Cntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_DAT3Cntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_CMDCntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_CDnCntl, PUEN, 1);
RA_SET_BITS_SIMPLE(MEMMAP_CHIP_CTRL_REG_BASE, Gbl_SD0_WPCntl, PUEN, 1);
// end of low level initialisation
}