The best way to make a Linux driver for something that isn't used to boot the kernel is to use a kernel module. You can link the HAL functions in when you create your kernel module. There information on doing this on the net. Just search for "writing Linux device drivers".
You could also consider not using a driver and just using the mmap system call to map the section of memory containing your device registers into the address space of your application. Weather this will work or not depends on the device you are using and how you want applications to interface with it.