}
 }
 
+static void tuner_i2c_address_check(struct tuner *t)
+{
+       if ((t->type == UNSET || t->type == TUNER_ABSENT) ||
+           ((t->i2c.addr < 0x64) || (t->i2c.addr > 0x6f)))
+               return;
+
+       tuner_warn("====================== WARNING! ======================\n");
+       tuner_warn("Support for tuners in i2c address range 0x64 thru 0x6f\n");
+       tuner_warn("will soon be dropped. This message indicates that your\n");
+       tuner_warn("hardware has a %s tuner at i2c address 0x%02x.\n",
+                  t->i2c.name, t->i2c.addr);
+       tuner_warn("To ensure continued support for your device, please\n");
+       tuner_warn("send a copy of this message, along with full dmesg\n");
+       tuner_warn("output to v4l-dvb-maintainer@linuxtv.org\n");
+       tuner_warn("Please use subject line: \"obsolete tuner i2c address.\"\n");
+       tuner_warn("driver: %s, addr: 0x%02x, type: %d (%s)\n",
+                  t->i2c.adapter->name, t->i2c.addr, t->type,
+                  tuners[t->type].name);
+       tuner_warn("====================== WARNING! ======================\n");
+}
+
 static void set_type(struct i2c_client *c, unsigned int type,
                     unsigned int new_mode_mask, unsigned int new_config,
                     int (*tuner_callback) (void *dev, int command,int arg))
        tuner_dbg("%s %s I2C addr 0x%02x with type %d used for 0x%02x\n",
                  c->adapter->name, c->driver->driver.name, c->addr << 1, type,
                  t->mode_mask);
+       tuner_i2c_address_check(t);
 }
 
 /*