Example #1
0
bool_t register_bus_uart(struct uart_t * uart)
{
	struct bus_t * bus;

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

	bus = malloc(sizeof(struct bus_t));
	if(!bus)
		return FALSE;

	bus->name = strdup(uart->name);
	bus->type = BUS_TYPE_UART;
	bus->driver = uart;
	bus->kobj = kobj_alloc_directory(bus->name);

	if(!register_bus(bus))
	{
		kobj_remove_self(bus->kobj);
		free(bus->name);
		free(bus);
		return FALSE;
	}

	if(uart->init)
		(uart->init)(uart);

	return TRUE;
}
Example #2
0
File: i2c.c Project: IngenicC/xboot
bool_t register_bus_i2c(struct i2c_t * i2c)
{
	struct bus_t * bus;

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

	bus = malloc(sizeof(struct bus_t));
	if(!bus)
		return FALSE;

	bus->name = strdup(i2c->name);
	bus->type = BUS_TYPE_I2C;
	bus->driver = i2c;
	bus->kobj = kobj_alloc_directory(bus->name);

	if(!register_bus(bus))
	{
		kobj_remove_self(bus->kobj);
		free(bus->name);
		free(bus);
		return FALSE;
	}

	if(i2c->init)
		(i2c->init)(i2c);

	return TRUE;
}
Example #3
0
static INITCALL console_init() {
    register_bus(&console_bus, "console");
    register_driver(&console_driver);

    vram_init(con_global);
    keyboard_init(con_global);

    con_global->device.bus = &console_bus;

    return 0;
}