54 lines
1.4 KiB
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 <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(struct device *dev)
|
||
|
{
|
||
|
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);
|