blob: 423230cfd134d03d747475c91d52e596db06dedb [file] [log] [blame]
Patrick Georgi70517072020-05-10 18:47:05 +02001/* SPDX-License-Identifier: BSD-3-Clause */
Varadarajan Narayanana6935c22016-03-02 16:57:10 +05302
Kyösti Mälkki13f66502019-03-03 08:01:05 +02003#include <device/mmio.h>
Varadarajan Narayanan25967642016-03-08 15:02:56 +05304#include <soc/blsp.h>
5#include <soc/clock.h>
Varadarajan Narayanana6935c22016-03-02 16:57:10 +05306
Varadarajan Narayanan25967642016-03-08 15:02:56 +05307blsp_return_t blsp_i2c_init(blsp_qup_id_t id)
8{
9 void *base = blsp_qup_base(id);
Varadarajan Narayanana6935c22016-03-02 16:57:10 +053010
Varadarajan Narayanan25967642016-03-08 15:02:56 +053011 if (!base)
12 return BLSP_ID_ERROR;
Varadarajan Narayanana6935c22016-03-02 16:57:10 +053013
Varadarajan Narayanan25967642016-03-08 15:02:56 +053014 if (blsp_i2c_clock_config(id) != 0)
15 return BLSP_ID_ERROR;
Varadarajan Narayanana6935c22016-03-02 16:57:10 +053016
Varadarajan Narayanan25967642016-03-08 15:02:56 +053017 if (blsp_i2c_init_board(id))
18 return BLSP_UNSUPPORTED;
Varadarajan Narayanana6935c22016-03-02 16:57:10 +053019
Varadarajan Narayanan25967642016-03-08 15:02:56 +053020 /* Configure Mini core to I2C core */
Julius Werner55009af2019-12-02 22:03:27 -080021 clrsetbits32(base, BLSP_MINI_CORE_MASK, BLSP_MINI_CORE_I2C);
Varadarajan Narayanana6935c22016-03-02 16:57:10 +053022
Varadarajan Narayanan25967642016-03-08 15:02:56 +053023 return BLSP_SUCCESS;
24}