zephyr/boards/xtensa/intel_s1000_crb/pinmux.c

54 lines
1.4 KiB
C

/*
* Copyright (c) 2018 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <kernel.h>
#include <init.h>
#include <drivers/pinmux.h>
#include "iomux.h"
/*
* :::::::::::: NOTE ::::::::::::
* For a list of possible I/O MUX settings,
* See soc/xtensa/intel_s1000/iomux.h
*/
/*
* Initializes the I/O MUX with the setting needed per Intel S1000 CRB
* For customizations, please refer to the table above for available settings
* Please note that a call to pinmux_pin_set is only needed when a setting
* that is not default is required
*/
static int intel_s1000_pinmux_init(const struct device *dev)
{
const struct device *pinmux;
pinmux = device_get_binding(CONFIG_PINMUX_NAME);
if (pinmux == NULL) {
return -ENXIO;
}
/* Select PDM instead of I2S0 since board has 8 microphones */
pinmux_pin_set(pinmux, PIN_GROUP(I2S0), PINMUX_FUNC_B);
/*
* I2S3 is wired to the host interface connector.
* Select GPIO to avoid any conflict with hosts that may be driving
* the signals.
*/
pinmux_pin_set(pinmux, PIN_GROUP(I2S3), PINMUX_FUNC_B);
/* TI DAC is on I2C1. Usually, there is no device on I2C0 */
pinmux_pin_set(pinmux, PIN_GROUP(I2C), PINMUX_FUNC_B);
/* Intel S1000 CRB has an octal SPI flash. Select MST_DQ */
pinmux_pin_set(pinmux, PIN_GROUP(EM_DQ), PINMUX_FUNC_B);
return 0;
}
SYS_INIT(intel_s1000_pinmux_init, PRE_KERNEL_2, CONFIG_PINMUX_INIT_PRIORITY);