sunxi-hdmi: Fix some modes no longer working with X

The "video:sunxi:disp:Dynamic mode switching" patch adds a check to
see if the passed in pixelclock is valid when calling Fb_check_var.

However that pixelclock gets there through a KHZ2PICOS followed by a
PICOS2KHZ conversion, changing for example a 85500000 clock into a
85506000 clock, causing this check to fail.

Note that the inaccuracy in this conversion is such, that it will fail
for almost any mode, yet for some reason this seems to only cause
problems for some modes. One theory I've is that a 85500000 mode causes
problems with X, because X only makes the (now failing) FBIOPUT_VSCREENINFO
call when KHZ2PICOS followed by PICOS2KHZ leads to a difference of
more then .01 Mhz after rounding. IE xorg.log for the failed case contains:
FBDEV(0):  Built-in mode "current": 85.5 MHz, 47.7 kHz, 60.0 Hz
FBDEV(0): Modeline "current"x0.0   85.51  1360 1424 1536 1792 ...
Note the 85.51 versus 85.5. In the end it does not matter, since we
simply need to deal with the inaccuracy and not make Fb_check_var
fail because of it.

This patch fixes this by:
1) Introducing new PICOS2HZ and HZ2PICOS inline functions (named in caps
   to match the naming of the PICOS2KHZ and KHZ2PICOS macros, but these
   cannot be macros because they need 64 bit divisions).

   This greatly improves accuracy since we have all clocks in HZ and converting
   them to Khz first just throws away a lot of precision
2) Rounding the result of PICOS2HZ to the nearest multiple of 10000 since edid
   clocks are always a multiple of 10000

Concretely this fixes X no longer starting on my HD ready television.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>