Sieht grundsätzlich gut aus, aber...
struct cdi_driver { cdi_device_type_t type; + const char* name; cdi_list_t* devices;
...wenn man an solchen zentralen Strukturen Änderungen macht, sollte man die bestehenden Treiber (= sis900) natürlich auch anpassen. Oder kommt service_register mit 0xdeadbeef als Name zurecht? ;-)