in platform/broadcom/sonic-platform-modules-quanta/ix8a-bwde-56x/modules/qci_platform_ix8a_bwde.c [140:338]
static int __init ix8a_bwde_platform_init(void)
{
struct i2c_adapter *adapter;
int ret, i;
ret = platform_driver_register(&ix8a_bwde_platform_driver);
if (ret < 0)
return ret;
/* Register platform stuff */
ix8a_bwde_device = platform_device_alloc("qci-ix8a_bwde", -1);
if (!ix8a_bwde_device) {
ret = -ENOMEM;
goto fail_platform_driver;
}
ret = platform_device_add(ix8a_bwde_device);
if (ret)
goto fail_platform_device;
g_client = kmalloc(sizeof(*g_client) * numof_i2c_devices, GFP_KERNEL);
for (i = 0; i < numof_i2c_devices; i++) g_client[i] = NULL;
g_client_port = kmalloc(sizeof(*g_client_port) * numof_ports, GFP_KERNEL);
for (i = 0; i < numof_ports; i++) g_client_port[i] = NULL;
adapter = i2c_get_adapter(0);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[0] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[0]); // pca9546_1
g_client[1] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[1]); // pca9548_1
g_client[2] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[16]); // CPU Linking Board at CPU's I2C Bus //
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x01);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[3] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[11]); // CPLD_1
g_client[4] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[17]); // CPLD_4 //
g_client[5] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[18]); // CPLD_6 //
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x02);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[6] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[12]); // CPLD_2
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x03);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[7] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[13]); // CPLD_3
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x04);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[8] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[2]); // pca9539_1
g_client[9] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[14]); // pca9698_QSFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x05);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[10] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[4]); // pca9548_1 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x06);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[11] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[5]); // pca9548_2 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x07);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[12] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[6]); // pca9548_3 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x08);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[13] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[7]); // pca9548_4 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x09);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[14] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[8]); // pca9548_5 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x0a);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[15] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[9]); // pca9548_6 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x0b);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[16] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[10]); // pca9548_7 SFP
i2c_put_adapter(adapter);
}
adapter = i2c_get_adapter(0x03);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
g_client[17] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[3]); // eeprom
i2c_put_adapter(adapter);
}
for(i = 13; i < 69; i ++){
adapter = i2c_get_adapter(i);
if (adapter == NULL)
{
printk("[%s] get i2c adapter fail at line %d", __FUNCTION__, __LINE__);
}
else
{
if (i < 61) // SFP28 1~48 EEPROM
g_client_port[i - 13] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[19]);
else // QSFP 49~56 EEPROM
g_client_port[i - 13] = i2c_new_client_device(adapter, &ix8a_bwde_i2c_devices[15]);
i2c_put_adapter(adapter);
}
}
return 0;
fail_platform_device:
platform_device_put(ix8a_bwde_device);
fail_platform_driver:
platform_driver_unregister(&ix8a_bwde_platform_driver);
return ret;
}