Lines Matching defs:smi

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