Lines Matching full:smi

43 struct smi {  struct
84 static void smi_devs_unregister(struct smi *smi) in smi_devs_unregister() argument
86 while (smi->i2c_num--) in smi_devs_unregister()
87 i2c_unregister_device(smi->i2c_devs[smi->i2c_num]); in smi_devs_unregister()
89 while (smi->spi_num--) in smi_devs_unregister()
90 spi_unregister_device(smi->spi_devs[smi->spi_num]); in smi_devs_unregister()
96 * @smi: Internal struct for Serial multi instantiate driver
101 static int smi_spi_probe(struct platform_device *pdev, struct smi *smi, in smi_spi_probe() argument
119 smi->spi_devs = devm_kcalloc(dev, count, sizeof(*smi->spi_devs), GFP_KERNEL); in smi_spi_probe()
120 if (!smi->spi_devs) in smi_spi_probe()
158 smi->spi_devs[i] = spi_dev; in smi_spi_probe()
159 smi->spi_num++; in smi_spi_probe()
162 if (smi->spi_num < count) { in smi_spi_probe()
168 dev_info(dev, "Instantiated %d SPI devices.\n", smi->spi_num); in smi_spi_probe()
172 smi_devs_unregister(smi); in smi_spi_probe()
180 * @smi: Internal struct for Serial multi instantiate driver
185 static int smi_i2c_probe(struct platform_device *pdev, struct smi *smi, in smi_i2c_probe() argument
202 smi->i2c_devs = devm_kcalloc(dev, count, sizeof(*smi->i2c_devs), GFP_KERNEL); in smi_i2c_probe()
203 if (!smi->i2c_devs) in smi_i2c_probe()
217 smi->i2c_devs[i] = i2c_acpi_new_device(dev, i, &board_info); in smi_i2c_probe()
218 if (IS_ERR(smi->i2c_devs[i])) { in smi_i2c_probe()
219 ret = dev_err_probe(dev, PTR_ERR(smi->i2c_devs[i]), in smi_i2c_probe()
223 smi->i2c_num++; in smi_i2c_probe()
225 if (smi->i2c_num < count) { in smi_i2c_probe()
231 dev_info(dev, "Instantiated %d I2C devices.\n", smi->i2c_num); in smi_i2c_probe()
235 smi_devs_unregister(smi); in smi_i2c_probe()
244 struct smi *smi; in smi_probe() local
253 smi = devm_kzalloc(dev, sizeof(*smi), GFP_KERNEL); in smi_probe()
254 if (!smi) in smi_probe()
257 platform_set_drvdata(pdev, smi); in smi_probe()
261 return smi_i2c_probe(pdev, smi, node->instances); in smi_probe()
263 return smi_spi_probe(pdev, smi, node->instances); in smi_probe()
273 ret = smi_i2c_probe(pdev, smi, node->instances); in smi_probe()
276 return smi_spi_probe(pdev, smi, node->instances); in smi_probe()
284 struct smi *smi = platform_get_drvdata(pdev); in smi_remove() local
286 smi_devs_unregister(smi); in smi_remove()