blob: 6b78fd53f924c449916d97897cfc1296055fbbe6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/* Copyright 2017 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* I2C module driver depends on chip series for Chrome EC */
#include "i2c.h"
#include "i2c_chip.h"
#include "registers.h"
#include "util.h"
/*****************************************************************************/
/* IC specific low-level driver depends on chip series */
int i2c_port_to_controller(int port)
{
if (port < 0 || port >= I2C_PORT_COUNT)
return -1;
return (port == NPCX_I2C_PORT0_0) ? 0 : port - 1;
}
void i2c_select_port(int port)
{
/*
* I2C0_1 uses port 1 of controller 0. All other I2C pin sets
* use port 0.
*/
if (port > NPCX_I2C_PORT0_1)
return;
/* Select IO pins for multi-ports I2C controllers */
UPDATE_BIT(NPCX_GLUE_SMBSEL, NPCX_SMBSEL_SMB0SEL,
(port == NPCX_I2C_PORT0_1));
}
int i2c_is_raw_mode(int port)
{
int bit = (port > NPCX_I2C_PORT0_1) ? ((port - 1) * 2) : port;
if (IS_BIT_SET(NPCX_DEVALT(2), bit))
return 0;
else
return 1;
}
|