int retval;
 
        /* Spacing (kHz) */
-       switch (space) {
+       switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_SPACE) >> 4) {
        /* 0: 200 kHz (USA, Australia) */
-       case 0 : spacing = 0.200 * FREQ_MUL; break;
+       case 0:
+               spacing = 0.200 * FREQ_MUL; break;
        /* 1: 100 kHz (Europe, Japan) */
-       case 1 : spacing = 0.100 * FREQ_MUL; break;
+       case 1:
+               spacing = 0.100 * FREQ_MUL; break;
        /* 2:  50 kHz */
-       default: spacing = 0.050 * FREQ_MUL; break;
+       default:
+               spacing = 0.050 * FREQ_MUL; break;
        };
 
        /* Bottom of Band (MHz) */
-       switch (band) {
+       switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
        /* 0: 87.5 - 108 MHz (USA, Europe) */
-       case 0 : band_bottom = 87.5 * FREQ_MUL; break;
+       case 0:
+               band_bottom = 87.5 * FREQ_MUL; break;
        /* 1: 76   - 108 MHz (Japan wide band) */
-       default: band_bottom = 76   * FREQ_MUL; break;
+       default:
+               band_bottom = 76   * FREQ_MUL; break;
        /* 2: 76   -  90 MHz (Japan) */
-       case 2 : band_bottom = 76   * FREQ_MUL; break;
+       case 2:
+               band_bottom = 76   * FREQ_MUL; break;
        };
 
        /* read channel */
        unsigned short chan;
 
        /* Spacing (kHz) */
-       switch (space) {
+       switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_SPACE) >> 4) {
        /* 0: 200 kHz (USA, Australia) */
-       case 0 : spacing = 0.200 * FREQ_MUL; break;
+       case 0:
+               spacing = 0.200 * FREQ_MUL; break;
        /* 1: 100 kHz (Europe, Japan) */
-       case 1 : spacing = 0.100 * FREQ_MUL; break;
+       case 1:
+               spacing = 0.100 * FREQ_MUL; break;
        /* 2:  50 kHz */
-       default: spacing = 0.050 * FREQ_MUL; break;
+       default:
+               spacing = 0.050 * FREQ_MUL; break;
        };
 
        /* Bottom of Band (MHz) */
-       switch (band) {
+       switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
        /* 0: 87.5 - 108 MHz (USA, Europe) */
-       case 0 : band_bottom = 87.5 * FREQ_MUL; break;
+       case 0:
+               band_bottom = 87.5 * FREQ_MUL; break;
        /* 1: 76   - 108 MHz (Japan wide band) */
-       default: band_bottom = 76   * FREQ_MUL; break;
+       default:
+               band_bottom = 76   * FREQ_MUL; break;
        /* 2: 76   -  90 MHz (Japan) */
-       case 2 : band_bottom = 76   * FREQ_MUL; break;
+       case 2:
+               band_bottom = 76   * FREQ_MUL; break;
        };
 
        /* Chan = [ Freq (Mhz) - Bottom of Band (MHz) ] / Spacing (kHz) */
                goto done;
 
        strcpy(tuner->name, "FM");
-       switch (band) {
+       /* range limits */
+       switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
        /* 0: 87.5 - 108 MHz (USA, Europe, default) */
        default:
                tuner->rangelow  =  87.5 * FREQ_MUL;