--- backend/niash.c	2010-12-02 00:49:58.000000000 +0100
+++ backend/niash.c.new	2011-09-21 20:09:07.000000000 +0200
@@ -82,14 +82,7 @@
   optThreshold,
 
 
-  optLast,
-/* put temporarily disabled options here after optLast */
-
-  optGroupMisc,
-  optLamp,
-
-  optCalibrate,
-  optGamma                      /* analog gamma = single number */
+  optLast
 } EOptionIndex;
 
 
@@ -685,17 +678,6 @@
           pDesc->size = 0;
           break;
 
-        case optGamma:
-          pDesc->name = SANE_NAME_ANALOG_GAMMA;
-          pDesc->title = SANE_TITLE_ANALOG_GAMMA;
-          pDesc->desc = SANE_DESC_ANALOG_GAMMA;
-          pDesc->type = SANE_TYPE_FIXED;
-          pDesc->constraint_type = SANE_CONSTRAINT_RANGE;
-          pDesc->constraint.range = &rangeGamma;
-          pDesc->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
-          pVal->w = startUpGamma;
-          break;
-
         case optGammaTable:
           pDesc->name = SANE_NAME_GAMMA_VECTOR;
           pDesc->title = SANE_TITLE_GAMMA_VECTOR;
@@ -707,31 +689,6 @@
           pVal->wa = s->aGammaTable;
           break;
 
-        case optGroupMisc:
-          pDesc->title = SANE_I18N ("Miscellaneous");
-          pDesc->type = SANE_TYPE_GROUP;
-          pDesc->size = 0;
-          break;
-
-        case optLamp:
-          pDesc->name = "lamp";
-          pDesc->title = SANE_I18N ("Lamp status");
-          pDesc->desc = SANE_I18N ("Switches the lamp on or off.");
-          pDesc->type = SANE_TYPE_BOOL;
-          pDesc->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
-          /* switch the lamp on when starting for first the time */
-          pVal->w = SANE_TRUE;
-          break;
-
-        case optCalibrate:
-          pDesc->name = "calibrate";
-          pDesc->title = SANE_I18N ("Calibrate");
-          pDesc->desc = SANE_I18N ("Calibrates for black and white level.");
-          pDesc->type = SANE_TYPE_BUTTON;
-          pDesc->cap = SANE_CAP_SOFT_SELECT;
-          pDesc->size = 0;
-          break;
-
         case optGroupMode:
           pDesc->title = SANE_I18N ("Scan Mode");
           pDesc->desc = "";
@@ -1007,7 +964,6 @@
           /* Get options of type SANE_Word */
         case optCount:
         case optDPI:
-        case optGamma:
         case optTLX:
         case optTLY:
         case optBRX:
@@ -1031,17 +987,6 @@
           strcpy ((char *) pVal, modeList[s->aValues[optMode].w]);
           break;
 
-          /* Get options of type SANE_Bool */
-        case optLamp:
-          GetLamp (&s->HWParams, &fLampIsOn);
-          *(SANE_Bool *) pVal = fLampIsOn;
-          break;
-
-        case optCalibrate:
-          /*  although this option has nothing to read,
-             it's added here to avoid a warning when running scanimage --help */
-          break;
-
         default:
           DBG (DBG_MSG, "SANE_ACTION_GET_VALUE: Invalid option (%d)\n", n);
         }
@@ -1061,7 +1006,6 @@
         case optCount:
           return SANE_STATUS_INVAL;
 
-        case optGamma:
         case optThreshold:
         case optDPI:
 
@@ -1089,15 +1033,7 @@
           DBG (DBG_MSG,
                "sane_control_option: SANE_ACTION_SET_VALUE %d = %d\n", n,
                (int) s->aValues[n].w);
-          if (n == optGamma)
-            {
-              if (!fSame && optLast > optGammaTable)
-                {
-                  info |= SANE_INFO_RELOAD_OPTIONS;
-                }
-              _SetScalarGamma (s->aGammaTable, s->aValues[n].w);
-            }
-          break;
+         break;
 
         case optGammaTable:
           DBG (DBG_MSG, "Writing gamma table\n");
@@ -1158,20 +1094,6 @@
           break;
 
 
-
-        case optLamp:
-          fVal = *(SANE_Bool *) pVal;
-          DBG (DBG_MSG, "lamp %s\n", fVal ? "on" : "off");
-          if (fVal)
-            _WarmUpLamp (s, WARMUP_INSESSION);
-          else
-            SetLamp (&s->HWParams, SANE_FALSE);
-          break;
-
-        case optCalibrate:
-/*       SimpleCalib(&s->HWParams); */
-          break;
-
         default:
           DBG (DBG_ERR, "SANE_ACTION_SET_VALUE: Invalid option (%d)\n", n);
         }
