I have successfully used the pm_power_off function pointer to make my custom Linux board call its power management chip over i2c (to turn the power off).
On Debian/Ubuntu systems (I don't know if in other Linux OSes will work this), if you want the halt command does a poweroff you can create this file:
/etc/default/halt
Write this content of that file:
# Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff".
HALT=poweroff
As the comment says, you can set now how halt should work. If you set it to halt it will only shutdown the computer without powering off. If you set poweroff it will work like as the poweroff command powering off the computer after closing all.