C. Attaching, Detaching and Unloading
 
-It's possible to detach/attach the framebuffer console from the vt layer by
-echoing anything to the following sysfs attributes found
-/sys/class/graphics/fbcon.
+Before going on on how to attach, detach and unload the framebuffer console, an
+illustration of the dependencies may help.
 
-          attach - attach framebuffer console to vt layer
-          detach - detach framebuffer console to vt layer
+The console layer, as with most subsystems, needs a driver that interfaces with
+the hardware. Thus, in a VGA console:
 
-If fbcon is detached from the vt layer, your boot console driver (which is
+console ---> VGA driver ---> hardware.
+
+Assuming the VGA driver can be unloaded, one must first unbind the VGA driver
+from the console layer before unloading the driver.  The VGA driver cannot be
+unloaded if it is still bound to the console layer. (See
+Documentation/console/console.txt for more information).
+
+This is more complicated in the case of the the framebuffer console (fbcon),
+because fbcon is an intermediate layer between the console and the drivers:
+
+console ---> fbcon ---> fbdev drivers ---> hardware
+
+The fbdev drivers cannot be unloaded if it's bound to fbcon, and fbcon cannot
+be unloaded if it's bound to the console layer.
+
+So to unload the fbdev drivers, one must first unbind fbcon from the console,
+then unbind the fbdev drivers from fbcon.  Fortunately, unbinding fbcon from
+the console layer will automatically unbind framebuffer drivers from
+fbcon. Thus, there is no need to explicitly unbind the fbdev drivers from
+fbcon.
+
+So, how do we unbind fbcon from the console? Part of the answer is in
+Documentation/console/console.txt. To summarize:
+
+Echo the ID number of the 'frame buffer driver' to:
+
+sys/class/tty/console/bind - attach framebuffer console to console layer
+sys/class/tty/console/unbind - detach framebuffer console from console layer
+
+If fbcon is detached from the console layer, your boot console driver (which is
 usually VGA text mode) will take over.  A few drivers (rivafb and i810fb) will
 restore VGA text mode for you.  With the rest, before detaching fbcon, you
 must take a few additional steps to make sure that your VGA text mode is
 
 5. Now to detach fbcon:
 
-       vbetool vbestate restore < <vga state file> && \
-       echo 1 > /sys/class/graphics/fbcon/detach
+       'cat /sys/class/tty/console/backend' and take note of the ID
 
-6. That's it, you're back to VGA mode. And if you compiled your drivers as
-   modules, you can unload them at will.  So if you want to change your driver
-   from xxxfb to yyyfb, you can do this:
+The above is probably needed only once. Then:
 
-       detach fbcon
-       rmmod xxxfb
-       modprobe yyyfb
+       vbetool vbestate restore < <vga state file> && \
+       echo <ID> > /sys/class/tty/console/unbind
 
-       Of course, con2fbmap can do the same thing but will not work if xxxfb
-       and yyyfb are not compatible (ie, cannot be loaded at the same time).
+6. That's it, you're back to VGA mode. And if you compiled fbcon as a module,
+   you can unload it by 'rmmod fbcon'
 
 7. To reattach fbcon:
 
-       echo 1 > /sys/class/graphics/fbcon/attach
+       echo <ID> > /sys/class/tty/console/bind
 
-8. Once the framebuffer console is detached, and if it is compiled as a module,
-the module can be unloaded with 'rmmod fbcon'.  This feature is great for
-developers.
+8. Once fbcon is unbound, all drivers registered to the system will also
+become unbound.  This means that fbcon and individual framebuffer drivers
+can be unloaded or reloaded at will. Reloading the drivers or fbcon will
+automatically bind the console, fbcon and the drivers together. Unloading
+all the drivers without unloading fbcon will make it impossible for the
+console to bind fbcon.
 
 Notes for vesafb users:
 =======================
     c. Attach fbcon
 
         vbetool vbestate restore < <vesa state file> && \
-       echo 1 > /sys/class/graphics/fbcon/attach
-
 Variation 2:
 
     a. Before detaching fbcon, do:
+       echo <ID> > /sys/class/tty/console/bind
+
 
        vbetool vbemode get
 
     c. Attach fbcon:
 
        vbetool vbemode set <mode number> && \
-       echo 1 > /sys/class/graphics/fbcon/attach
+       echo <ID> > /sys/class/tty/console/bind
 
 --
 Antonino Daplas <adaplas@pol.net>