add HAL Descriptor

- hal descriptor hopefully make vendor specific part into more generic abstraction