i2c: core: add api to provide frequency mode strings
Some I2C drivers like Designware and HiSilicon will print the bus frequency mode information, so add a public one that everyone can make use of. Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com> Signed-off-by: Wolfram Sang <wsa@kernel.org>
This commit is contained in:
committed by
Wolfram Sang
parent
07740c92ae
commit
3b4c747cd3
@@ -76,6 +76,27 @@ void i2c_transfer_trace_unreg(void)
|
|||||||
static_branch_dec(&i2c_trace_msg_key);
|
static_branch_dec(&i2c_trace_msg_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *i2c_freq_mode_string(u32 bus_freq_hz)
|
||||||
|
{
|
||||||
|
switch (bus_freq_hz) {
|
||||||
|
case I2C_MAX_STANDARD_MODE_FREQ:
|
||||||
|
return "Standard Mode (100 kHz)";
|
||||||
|
case I2C_MAX_FAST_MODE_FREQ:
|
||||||
|
return "Fast Mode (400 kHz)";
|
||||||
|
case I2C_MAX_FAST_MODE_PLUS_FREQ:
|
||||||
|
return "Fast Mode Plus (1.0 MHz)";
|
||||||
|
case I2C_MAX_TURBO_MODE_FREQ:
|
||||||
|
return "Turbo Mode (1.4 MHz)";
|
||||||
|
case I2C_MAX_HIGH_SPEED_MODE_FREQ:
|
||||||
|
return "High Speed Mode (3.4 MHz)";
|
||||||
|
case I2C_MAX_ULTRA_FAST_MODE_FREQ:
|
||||||
|
return "Ultra Fast Mode (5.0 MHz)";
|
||||||
|
default:
|
||||||
|
return "Unknown Mode";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(i2c_freq_mode_string);
|
||||||
|
|
||||||
const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
|
const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
|
||||||
const struct i2c_client *client)
|
const struct i2c_client *client)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ struct module;
|
|||||||
struct property_entry;
|
struct property_entry;
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_I2C)
|
#if IS_ENABLED(CONFIG_I2C)
|
||||||
|
/* Return the Frequency mode string based on the bus frequency */
|
||||||
|
const char *i2c_freq_mode_string(u32 bus_freq_hz);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The master routines are the ones normally used to transmit data to devices
|
* The master routines are the ones normally used to transmit data to devices
|
||||||
* on a bus (or read from them). Apart from two basic transfer functions to
|
* on a bus (or read from them). Apart from two basic transfer functions to
|
||||||
|
|||||||
Reference in New Issue
Block a user