Ejemplo n.º 1
0
Archivo: i2c.c Proyecto: IngenicC/xboot
bool_t unregister_bus_i2c(struct i2c_t * i2c)
{
	struct bus_t * bus;
	struct i2c_t * driver;

	if(!i2c || !i2c->name)
		return FALSE;

	bus = search_bus_with_type(i2c->name, BUS_TYPE_I2C);
	if(!bus)
		return FALSE;

	driver = (struct i2c_t *)(bus->driver);
	if(driver && driver->exit)
		(driver->exit)(i2c);

	if(!unregister_bus(bus))
		return FALSE;

	kobj_remove_self(bus->kobj);
	free(bus->name);
	free(bus);

	return TRUE;
}
Ejemplo n.º 2
0
bool_t unregister_bus_uart(struct uart_t * uart)
{
	struct bus_t * bus;
	struct uart_t * driver;

	if(!uart || !uart->name)
		return FALSE;

	bus = search_bus_with_type(uart->name, BUS_TYPE_UART);
	if(!bus)
		return FALSE;

	driver = (struct uart_t *)(bus->driver);
	if(driver && driver->exit)
		(driver->exit)(uart);

	if(!unregister_bus(bus))
		return FALSE;

	kobj_remove_self(bus->kobj);
	free(bus->name);
	free(bus);

	return TRUE;
}