Unterschied zwischen device_register und driver_register

Ich schreibe einen UART-Treiber. Ich bin auf die beiden Funktionen im Kapitel 14. Linux-Gerätemodell gestoßen.

int device_register(struct device *dev);
int driver_register(struct device_driver *drv);

Da UART ein Char-Treiber ist, habe ich die Major-Nummer dynamisch mit (alloc_chrdev_region) und fügte das Gerät dem Kernel mit hinzucdevadd().

Ich bin rübergekommenuart_register_driver() undplatform_driver_register() in omap-serial.c.

Ich könnte das abbildendriver_register mit demplatform_driver_register() aber dieuart_register_driver ist mit tty verwandten Funktionen abgebildet. Da ich ein Anfänger bin, möchte ich die tty verwandten Funktionen nicht verwenden.

Istuart_register_driver verwandt mitdevice_driver()?

Bitte erkläre.