Skip to content

Commit b9c3cd0

Browse files
authored
Merge branch 'intel:main' into main
2 parents 84ac69e + 7c8942c commit b9c3cd0

3 files changed

Lines changed: 35 additions & 3 deletions

File tree

bsp_sedi/drivers/i2c/sedi_i2c_dw_apb_200a.c

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ static uint32_t regval_speed[I2C_SPEED_MAX] = {
110110
* For example, standard mode is 100KHz, 10000ns per period, 5000ns for
111111
* SCL low & high level.
112112
*/
113-
#define I2C_SS_SCL_HIGH 4500
113+
#define I2C_SS_SCL_HIGH 4640
114114
#define I2C_SS_SCL_LOW 5100
115115
#define I2C_FS_SCL_HIGH 690
116116
#define I2C_FS_SCL_LOW 1650
@@ -1126,6 +1126,25 @@ int32_t sedi_i2c_control(IN sedi_i2c_t i2c_device, IN uint32_t control, IN uint3
11261126
case SEDI_I2C_SET_RX_MEMORY_TYPE:
11271127
context->rx_memory_type = arg;
11281128
break;
1129+
case SEDI_I2C_SET_BUS_DATA_STD:
1130+
case SEDI_I2C_SET_BUS_DATA_FST:
1131+
case SEDI_I2C_SET_BUS_DATA_FSP:
1132+
case SEDI_I2C_SET_BUS_DATA_HIGH:
1133+
{
1134+
const sedi_i2c_bus_clk_t *bus_clk = (const sedi_i2c_bus_clk_t *)arg;
1135+
sedi_i2c_bus_clk_t *bus_clk_ptr = &context->bus_info.std_clk;
1136+
uint32_t idx = control - SEDI_I2C_SET_BUS_DATA_STD;
1137+
1138+
DBG_CHECK(NULL != bus_clk, SEDI_DRIVER_ERROR_PARAMETER);
1139+
DBG_CHECK(idx < sizeof(context->bus_info) / sizeof(sedi_i2c_bus_clk_t),
1140+
SEDI_DRIVER_ERROR_PARAMETER);
1141+
1142+
bus_clk_ptr = bus_clk_ptr + idx;
1143+
bus_clk_ptr->sda_hold = LBW_CLK_MHZ * bus_clk->sda_hold / NS_PER_US;
1144+
bus_clk_ptr->hcnt = LBW_CLK_MHZ * bus_clk->hcnt / NS_PER_US;
1145+
bus_clk_ptr->lcnt = LBW_CLK_MHZ * bus_clk->lcnt / NS_PER_US;
1146+
}
1147+
break;
11291148
default:
11301149
ret = SEDI_DRIVER_ERROR;
11311150
break;

bsp_sedi/drivers/spi/sedi_spi_dw_apb.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,8 @@ static inline void lld_spi_config_cpol_cpha(sedi_spi_regs_t *spi, int cpol, int
274274
cpha = cpha ? SEDI_RBFV(SPI, CTRLR0, SCPH, SCPH_START) :
275275
SEDI_RBFV(SPI, CTRLR0, SCPH, SCPH_MIDDLE);
276276

277-
SEDI_PREG_RBF_SET(SPI, CTRLR0, SCPH, cpol, &spi->ctrlr0);
278-
SEDI_PREG_RBF_SET(SPI, CTRLR0, SCPOL, cpha, &spi->ctrlr0);
277+
SEDI_PREG_RBF_SET(SPI, CTRLR0, SCPH, cpha, &spi->ctrlr0);
278+
SEDI_PREG_RBF_SET(SPI, CTRLR0, SCPOL, cpol, &spi->ctrlr0);
279279
}
280280

281281
static inline void lld_spi_config_loopback(sedi_spi_regs_t *spi, int loopback)

bsp_sedi/include/driver/sedi_driver_i2c.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,19 @@ extern "C" {
6666
*/
6767
#define SEDI_I2C_SET_RX_MEMORY_TYPE (0x06)
6868

69+
/*!
70+
* \def SEDI_I2C_SET_BUS_DATA_STD/_FST/_FSP/_HIGH
71+
* \brief Update cached bus timing data for a speed mode.
72+
*
73+
* The new timing values are stored in the driver context and take effect
74+
* the next time the corresponding bus speed is selected through
75+
* SEDI_I2C_BUS_SPEED.
76+
*/
77+
#define SEDI_I2C_SET_BUS_DATA_STD (0x0B)
78+
#define SEDI_I2C_SET_BUS_DATA_FST (SEDI_I2C_SET_BUS_DATA_STD + 1)
79+
#define SEDI_I2C_SET_BUS_DATA_FSP (SEDI_I2C_SET_BUS_DATA_STD + 2)
80+
#define SEDI_I2C_SET_BUS_DATA_HIGH (SEDI_I2C_SET_BUS_DATA_STD + 3)
81+
6982
/*!
7083
* \}
7184
*/

0 commit comments

Comments
 (0)