Lines Matching defs:i2c
14 #include <ddk/protocol/i2c-impl.h>
64 i2c_impl_protocol_t i2c;
89 zxlogf(ERROR, "i2c: interrupt error\n");
95 zxlogf(ERROR,"i2c: error on bus\n");
247 be one of these instances for each of the soc i2c ports.
249 static zx_status_t aml_i2c_dev_init(aml_i2c_t* i2c, unsigned index) {
250 aml_i2c_dev_t* device = &i2c->i2c_devs[index];
256 status = pdev_map_mmio_buffer(&i2c->pdev, index, ZX_CACHE_POLICY_UNCACHED_DEVICE,
265 status = pdev_map_interrupt(&i2c->pdev, index, &device->irq);
282 aml_i2c_t* i2c = ctx;
284 return i2c->dev_count;
304 aml_i2c_t* i2c = ctx;
305 if (bus_id >= i2c->dev_count) {
308 aml_i2c_dev_t *dev = &i2c->i2c_devs[bus_id];
337 aml_i2c_t* i2c = ctx;
338 for (unsigned i = 0; i < i2c->dev_count; i++) {
339 aml_i2c_dev_t* device = &i2c->i2c_devs[i];
344 free(i2c->i2c_devs);
345 free(i2c);
356 aml_i2c_t* i2c = calloc(1, sizeof(aml_i2c_t));
357 if (!i2c) {
361 if ((status = device_get_protocol(parent, ZX_PROTOCOL_PLATFORM_DEV, &i2c->pdev)) != ZX_OK) {
373 status = pdev_get_device_info(&i2c->pdev, &info);
385 i2c->i2c_devs = calloc(info.mmio_count, sizeof(aml_i2c_dev_t));
386 if (!i2c->i2c_devs) {
389 i2c->dev_count = info.mmio_count;
391 for (unsigned i = 0; i < i2c->dev_count; i++) {
392 zx_status_t status = aml_i2c_dev_init(i2c, i);
401 .name = "aml-i2c",
402 .ctx = i2c,
407 status = device_add(parent, &args, &i2c->zxdev);
413 i2c->i2c.ops = &i2c_ops;
414 i2c->i2c.ctx = i2c;
415 pbus_register_protocol(&pbus, ZX_PROTOCOL_I2C_IMPL, &i2c->i2c, NULL, NULL);
420 aml_i2c_release(i2c);