Why waste hardware resources with a compass? using a analog clock one can determine "north" fairly easily. at that point it becomes a software issue.
I found another interesting chip here.