void zd_rf_init(struct zd_rf *rf)
 {
        memset(rf, 0, sizeof(*rf));
+
+       /* default to update channel integration, as almost all RF's do want
+        * this */
+       rf->update_channel_int = 1;
 }
 
 void zd_rf_clear(struct zd_rf *rf)
 {
+       if (rf->clear)
+               rf->clear(rf);
        ZD_MEMCLEAR(rf, sizeof(*rf));
 }
 
 
 
        u8 channel;
 
+       /* whether channel integration and calibration should be updated
+        * defaults to 1 (yes) */
+       u8 update_channel_int:1;
+
+       /* private RF driver data */
+       void *priv;
+
        /* RF-specific functions */
        int (*init_hw)(struct zd_rf *rf);
        int (*set_channel)(struct zd_rf *rf, u8 channel);
        int (*switch_radio_on)(struct zd_rf *rf);
        int (*switch_radio_off)(struct zd_rf *rf);
        int (*patch_6m_band_edge)(struct zd_rf *rf, u8 channel);
+       void (*clear)(struct zd_rf *rf);
 };
 
 const char *zd_rf_name(u8 type);
 int zd_rf_patch_6m_band_edge(struct zd_rf *rf, u8 channel);
 int zd_rf_generic_patch_6m(struct zd_rf *rf, u8 channel);
 
+static inline int zd_rf_should_update_pwr_int(struct zd_rf *rf)
+{
+       return rf->update_channel_int;
+}
+
 /* Functions for individual RF chips */
 
 int zd_rf_init_rf2959(struct zd_rf *rf);