I don't know where your 'demo' came from, compared to the 'Freescale USB stack' I am using, but in usb_classes.c is:
/* here hub is considered as device from host point of view */
#ifdef USBCLASS_INC_HUB
#include "usb_host_hub.h"
#endif
and, within USB_CLASS_MAP_CONST CLASS_MAP class_interface_map[] =
...
#ifdef USBCLASS_INC_HUB
{
usb_class_hub_init,
sizeof(USB_HUB_CLASS_INTF_STRUCT),
USB_CLASS_HUB,
USB_SUBCLASS_HUB_NONE,
USB_PROTOCOL_HUB_FS,
0xFF, 0x00, 0x00
},
#endif
...
and of course the 'usb_hub_host' driver files to go with those.
As for 'multiple', I'm not convinced that the stack I am looking at has the 'hooks' so that EACH 'callback' (for instance) on a HID instantiation references a different handle-indexed structure so that 'multiples' could be kept entirely isolated. If your stack looks so sub-indexed, then you are one step ahead!