The IOS initializes device drivers from the bottom up, from layer 31 to layer 0. Hence, the IOS initializes port drivers before a vendor-supplied drivers, vendor-supplied drivers before type-specific drivers, and so on.
The IOS initializes value-added drivers in groups, layer-by-layer. All drivers in a given layer are initialized before drivers in the next layer. The initialization order within a layer is not defined. This means you cannot depend on the drivers in a group being initialized in a given order or even that the order will remain the same from one boot operation to another.
A driver can belong to more than one layer. In such cases, the driver receives multiple initializations calls but will only be loaded once.