1
0
mirror of https://github.com/corundum/corundum.git synced 2025-01-16 08:12:53 +08:00

Add create_i2c_client method

This commit is contained in:
Alex Forencich 2020-09-19 16:34:54 -07:00
parent f5f9cdca8b
commit 150f3e1768

View File

@ -32,6 +32,7 @@ either expressed or implied, of The Regents of the University of California.
*/
#include "mqnic.h"
#include <linux/version.h>
void mqnic_i2c_set_scl(void *data, int state)
{
@ -84,9 +85,30 @@ static const struct i2c_algo_bit_data mqnic_i2c_algo = {
.timeout = 20
};
static struct i2c_board_info mqnic_eeprom_info = {
I2C_BOARD_INFO("24c02", 0x50),
};
static struct i2c_client *create_i2c_client(struct i2c_adapter *adapter, const char *type, int addr, const struct property_entry *props)
{
struct i2c_client *client;
struct i2c_board_info board_info;
if (!adapter)
return NULL;
memset(&board_info, 0, sizeof(board_info));
strscpy(board_info.type, type, I2C_NAME_SIZE);
board_info.addr = addr;
board_info.properties = props;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
client = i2c_new_client_device(adapter, &board_info);
#else
client = i2c_new_device(adapter, &board_info);
#endif
if (!client)
return NULL;
return client;
}
int mqnic_init_i2c(struct mqnic_dev *mqnic)
{
@ -121,11 +143,9 @@ int mqnic_init_i2c(struct mqnic_dev *mqnic)
return ret;
}
mqnic->eeprom_i2c_client = i2c_new_device(&mqnic->eeprom_i2c_adap, &mqnic_eeprom_info);
if (mqnic->eeprom_i2c_client == NULL)
{
ret = -ENODEV;
}
// I2C EEPROM
mqnic->eeprom_i2c_client = create_i2c_client(&mqnic->eeprom_i2c_adap, "24c02", 0x50, NULL);
break;
}