* http://www.gnu.org/copyleft/gpl.html
  */
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/pci.h>
 
 static int tuner_attach_stv6110(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct i2c_adapter *i2c;
        struct stv090x_config *feconf = (struct stv090x_config *)
                chan->dev->card_info->fe_config[chan->number];
 
        ctl = dvb_attach(stv6110x_attach, chan->fe, tunerconf, i2c);
        if (ctl == NULL) {
-               printk(KERN_ERR DEVICE_NAME ": No STV6110X found!\n");
+               dev_err(pdev, "No STV6110X found!\n");
                return -ENODEV;
        }
 
 
 static int tuner_attach_tda18271(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct i2c_adapter *i2c;
        struct dvb_frontend *fe;
 
        if (chan->fe->ops.i2c_gate_ctrl)
                chan->fe->ops.i2c_gate_ctrl(chan->fe, 0);
        if (!fe) {
-               printk(KERN_ERR "No TDA18271 found!\n");
+               dev_err(pdev, "No TDA18271 found!\n");
                return -ENODEV;
        }
 
 
 static int demod_attach_stv0900(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct i2c_adapter *i2c;
        struct stv090x_config *feconf = (struct stv090x_config *)
                chan->dev->card_info->fe_config[chan->number];
                        (chan->number & 1) == 0 ? STV090x_DEMODULATOR_0
                                                : STV090x_DEMODULATOR_1);
        if (chan->fe == NULL) {
-               printk(KERN_ERR DEVICE_NAME ": No STV0900 found!\n");
+               dev_err(pdev, "No STV0900 found!\n");
                return -ENODEV;
        }
 
 
        if (!dvb_attach(lnbh24_attach, chan->fe, i2c, 0,
                        0, chan->dev->card_info->lnb[chan->number])) {
-               printk(KERN_ERR DEVICE_NAME ": No LNBH24 found!\n");
+               dev_err(pdev, "No LNBH24 found!\n");
                dvb_frontend_detach(chan->fe);
                chan->fe = NULL;
                return -ENODEV;
 static int demod_attach_drxk(struct ngene_channel *chan,
                             struct i2c_adapter *i2c)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct drxk_config config;
 
        memset(&config, 0, sizeof(config));
 
        chan->fe = dvb_attach(drxk_attach, &config, i2c);
        if (!chan->fe) {
-               printk(KERN_ERR "No DRXK found!\n");
+               dev_err(pdev, "No DRXK found!\n");
                return -ENODEV;
        }
        chan->fe->sec_priv = chan;
 
 static int cineS2_probe(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct i2c_adapter *i2c;
        struct stv090x_config *fe_conf;
        u8 buf[3];
                }
                rc = i2c_transfer(i2c, &i2c_msg, 1);
                if (rc != 1) {
-                       printk(KERN_ERR DEVICE_NAME ": could not setup DPNx\n");
+                       dev_err(pdev, "Could not setup DPNx\n");
                        return -EIO;
                }
        } else if (port_has_drxk(i2c, chan->number^2)) {
                chan->demod_type = 1;
                demod_attach_drxk(chan, i2c);
        } else {
-               printk(KERN_ERR "No demod found on chan %d\n", chan->number);
+               dev_err(pdev, "No demod found on chan %d\n", chan->number);
                return -ENODEV;
        }
        return 0;
  */
 static int demod_attach_lg330x(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
+
        chan->fe = dvb_attach(lgdt330x_attach, &aver_m780, &chan->i2c_adapter);
        if (chan->fe == NULL) {
-               printk(KERN_ERR DEVICE_NAME ": No LGDT330x found!\n");
+               dev_err(pdev, "No LGDT330x found!\n");
                return -ENODEV;
        }
 
 
 static int demod_attach_drxd(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct drxd_config *feconf;
 
        feconf = chan->dev->card_info->fe_config[chan->number];
        chan->fe = dvb_attach(drxd_attach, feconf, chan,
                        &chan->i2c_adapter, &chan->dev->pci_dev->dev);
        if (!chan->fe) {
-               pr_err("No DRXD found!\n");
+               dev_err(pdev, "No DRXD found!\n");
                return -ENODEV;
        }
        return 0;
 
 static int tuner_attach_dtt7520x(struct ngene_channel *chan)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct drxd_config *feconf;
 
        feconf = chan->dev->card_info->fe_config[chan->number];
        if (!dvb_attach(dvb_pll_attach, chan->fe, feconf->pll_address,
                        &chan->i2c_adapter,
                        feconf->pll_type)) {
-               pr_err("No pll(%d) found!\n", feconf->pll_type);
+               dev_err(pdev, "No pll(%d) found!\n", feconf->pll_type);
                return -ENODEV;
        }
        return 0;
 static int i2c_write_eeprom(struct i2c_adapter *adapter,
                            u8 adr, u16 reg, u8 data)
 {
+       struct device *pdev = adapter->dev.parent;
        u8 m[3] = {(reg >> 8), (reg & 0xff), data};
        struct i2c_msg msg = {.addr = adr, .flags = 0, .buf = m,
                              .len = sizeof(m)};
 
        if (i2c_transfer(adapter, &msg, 1) != 1) {
-               pr_err(DEVICE_NAME ": Error writing EEPROM!\n");
+               dev_err(pdev, "Error writing EEPROM!\n");
                return -EIO;
        }
        return 0;
 static int i2c_read_eeprom(struct i2c_adapter *adapter,
                           u8 adr, u16 reg, u8 *data, int len)
 {
+       struct device *pdev = adapter->dev.parent;
        u8 msg[2] = {(reg >> 8), (reg & 0xff)};
        struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
                                   .buf = msg, .len = 2 },
                                   .buf = data, .len = len} };
 
        if (i2c_transfer(adapter, msgs, 2) != 2) {
-               pr_err(DEVICE_NAME ": Error reading EEPROM\n");
+               dev_err(pdev, "Error reading EEPROM\n");
                return -EIO;
        }
        return 0;
 static int ReadEEProm(struct i2c_adapter *adapter,
                      u16 Tag, u32 MaxLen, u8 *data, u32 *pLength)
 {
+       struct device *pdev = adapter->dev.parent;
        int status = 0;
        u16 Addr = MICNG_EE_START, Length, tag = 0;
        u8  EETag[3];
                Addr += sizeof(u16) + 1 + EETag[2];
        }
        if (Addr + sizeof(u16) + 1 + EETag[2] > MICNG_EE_END) {
-               pr_err(DEVICE_NAME
-                      ": Reached EOEE @ Tag = %04x Length = %3d\n",
-                      tag, EETag[2]);
+               dev_err(pdev, "Reached EOEE @ Tag = %04x Length = %3d\n",
+                       tag, EETag[2]);
                return -1;
        }
        Length = EETag[2];
 static int WriteEEProm(struct i2c_adapter *adapter,
                       u16 Tag, u32 Length, u8 *data)
 {
+       struct device *pdev = adapter->dev.parent;
        int status = 0;
        u16 Addr = MICNG_EE_START;
        u8 EETag[3];
                Addr += sizeof(u16) + 1 + EETag[2];
        }
        if (Addr + sizeof(u16) + 1 + EETag[2] > MICNG_EE_END) {
-               pr_err(DEVICE_NAME
-                      ": Reached EOEE @ Tag = %04x Length = %3d\n",
-                      tag, EETag[2]);
+               dev_err(pdev, "Reached EOEE @ Tag = %04x Length = %3d\n",
+                       tag, EETag[2]);
                return -1;
        }
 
                        if (status)
                                break;
                        if (Tmp != data[i])
-                               pr_err(DEVICE_NAME
-                                      "eeprom write error\n");
+                               dev_err(pdev, "eeprom write error\n");
                        retry -= 1;
                }
                if (status) {
-                       pr_err(DEVICE_NAME
-                              ": Timeout polling eeprom\n");
+                       dev_err(pdev, "Timeout polling eeprom\n");
                        break;
                }
        }
 static s16 osc_deviation(void *priv, s16 deviation, int flag)
 {
        struct ngene_channel *chan = priv;
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct i2c_adapter *adap = &chan->i2c_adapter;
        u16 data = 0;
 
        if (flag) {
                data = (u16) deviation;
-               pr_info(DEVICE_NAME ": write deviation %d\n",
-                      deviation);
+               dev_info(pdev, "write deviation %d\n",
+                        deviation);
                eeprom_write_ushort(adap, 0x1000 + chan->number, data);
        } else {
                if (eeprom_read_ushort(adap, 0x1000 + chan->number, &data))
                        data = 0;
-               pr_info(DEVICE_NAME ": read deviation %d\n",
-                      (s16) data);
+               dev_info(pdev, "read deviation %d\n",
+                        (s16)data);
        }
 
        return (s16) data;
 static pci_ers_result_t ngene_error_detected(struct pci_dev *dev,
                                             enum pci_channel_state state)
 {
-       printk(KERN_ERR DEVICE_NAME ": PCI error\n");
+       dev_err(&dev->dev, "PCI error\n");
        if (state == pci_channel_io_perm_failure)
                return PCI_ERS_RESULT_DISCONNECT;
        if (state == pci_channel_io_frozen)
 
 static pci_ers_result_t ngene_slot_reset(struct pci_dev *dev)
 {
-       printk(KERN_INFO DEVICE_NAME ": slot reset\n");
+       dev_info(&dev->dev, "slot reset\n");
        return 0;
 }
 
 static void ngene_resume(struct pci_dev *dev)
 {
-       printk(KERN_INFO DEVICE_NAME ": resume\n");
+       dev_info(&dev->dev, "resume\n");
 }
 
 static const struct pci_error_handlers ngene_errors = {
 
 static __init int module_init_ngene(void)
 {
-       printk(KERN_INFO
-              "nGene PCIE bridge driver, Copyright (C) 2005-2007 Micronas\n");
+       /* pr_*() since we don't have a device to use with dev_*() yet */
+       pr_info("nGene PCIE bridge driver, Copyright (C) 2005-2007 Micronas\n");
+
        return pci_register_driver(&ngene_pci_driver);
 }
 
 
 
 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
 
-#define dprintk        if (debug) printk
-
 #define ngwriteb(dat, adr)         writeb((dat), dev->iomem + (adr))
 #define ngwritel(dat, adr)         writel((dat), dev->iomem + (adr))
 #define ngwriteb(dat, adr)         writeb((dat), dev->iomem + (adr))
 static void demux_tasklet(unsigned long data)
 {
        struct ngene_channel *chan = (struct ngene_channel *)data;
+       struct device *pdev = &chan->dev->pci_dev->dev;
        struct SBufferHeader *Cur = chan->nextBuffer;
 
        spin_lock_irq(&chan->state_lock);
                                        chan->HWState = HWSTATE_RUN;
                                }
                        } else {
-                               printk(KERN_ERR DEVICE_NAME ": OOPS\n");
+                               dev_err(pdev, "OOPS\n");
                                if (chan->HWState == HWSTATE_RUN) {
                                        Cur->ngeneBuffer.SR.Flags &= ~0x40;
                                        break;  /* Stop processing stream */
                                }
                        }
                        if (chan->AudioDTOUpdated) {
-                               printk(KERN_INFO DEVICE_NAME
-                                      ": Update AudioDTO = %d\n",
-                                      chan->AudioDTOValue);
+                               dev_info(pdev, "Update AudioDTO = %d\n",
+                                        chan->AudioDTOValue);
                                Cur->ngeneBuffer.SR.DTOUpdate =
                                        chan->AudioDTOValue;
                                chan->AudioDTOUpdated = 0;
 static irqreturn_t irq_handler(int irq, void *dev_id)
 {
        struct ngene *dev = (struct ngene *)dev_id;
+       struct device *pdev = &dev->pci_dev->dev;
        u32 icounts = 0;
        irqreturn_t rc = IRQ_NONE;
        u32 i = MAX_STREAM;
                                *(dev->EventBuffer);
                        dev->EventQueueWriteIndex = nextWriteIndex;
                } else {
-                       printk(KERN_ERR DEVICE_NAME ": event overflow\n");
+                       dev_err(pdev, "event overflow\n");
                        dev->EventQueueOverflowCount += 1;
                        dev->EventQueueOverflowFlag = 1;
                }
 
 static void dump_command_io(struct ngene *dev)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        u8 buf[8], *b;
 
        ngcpyfrom(buf, HOST_TO_NGENE, 8);
-       printk(KERN_ERR "host_to_ngene (%04x): %*ph\n", HOST_TO_NGENE, 8, buf);
+       dev_err(pdev, "host_to_ngene (%04x): %*ph\n", HOST_TO_NGENE, 8, buf);
 
        ngcpyfrom(buf, NGENE_TO_HOST, 8);
-       printk(KERN_ERR "ngene_to_host (%04x): %*ph\n", NGENE_TO_HOST, 8, buf);
+       dev_err(pdev, "ngene_to_host (%04x): %*ph\n", NGENE_TO_HOST, 8, buf);
 
        b = dev->hosttongene;
-       printk(KERN_ERR "dev->hosttongene (%p): %*ph\n", b, 8, b);
+       dev_err(pdev, "dev->hosttongene (%p): %*ph\n", b, 8, b);
 
        b = dev->ngenetohost;
-       printk(KERN_ERR "dev->ngenetohost (%p): %*ph\n", b, 8, b);
+       dev_err(pdev, "dev->ngenetohost (%p): %*ph\n", b, 8, b);
 }
 
 static int ngene_command_mutex(struct ngene *dev, struct ngene_command *com)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        int ret;
        u8 *tmpCmdDoneByte;
 
        if (!ret) {
                /*ngwritel(0, FORCE_NMI);*/
 
-               printk(KERN_ERR DEVICE_NAME
-                      ": Command timeout cmd=%02x prev=%02x\n",
-                      com->cmd.hdr.Opcode, dev->prev_cmd);
+               dev_err(pdev, "Command timeout cmd=%02x prev=%02x\n",
+                       com->cmd.hdr.Opcode, dev->prev_cmd);
                dump_command_io(dev);
                return -1;
        }
 static int ngene_command_stream_control(struct ngene *dev, u8 stream,
                                        u8 control, u8 mode, u8 flags)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        struct ngene_channel *chan = &dev->channel[stream];
        struct ngene_command com;
        u16 BsUVI = ((stream & 1) ? 0x9400 : 0x9300);
        com.in_len = sizeof(struct FW_STREAM_CONTROL);
        com.out_len = 0;
 
-       dprintk(KERN_INFO DEVICE_NAME
-               ": Stream=%02x, Control=%02x, Mode=%02x\n",
+       dev_dbg(pdev, "Stream=%02x, Control=%02x, Mode=%02x\n",
                com.cmd.StreamControl.Stream, com.cmd.StreamControl.Control,
                com.cmd.StreamControl.Mode);
 
 
 void set_transfer(struct ngene_channel *chan, int state)
 {
+       struct device *pdev = &chan->dev->pci_dev->dev;
        u8 control = 0, mode = 0, flags = 0;
        struct ngene *dev = chan->dev;
        int ret;
 
        /*
-       printk(KERN_INFO DEVICE_NAME ": st %d\n", state);
+       dev_info(pdev, "st %d\n", state);
        msleep(100);
        */
 
        if (state) {
                if (chan->running) {
-                       printk(KERN_INFO DEVICE_NAME ": already running\n");
+                       dev_info(pdev, "already running\n");
                        return;
                }
        } else {
                if (!chan->running) {
-                       printk(KERN_INFO DEVICE_NAME ": already stopped\n");
+                       dev_info(pdev, "already stopped\n");
                        return;
                }
        }
        if (state) {
                spin_lock_irq(&chan->state_lock);
 
-               /* printk(KERN_INFO DEVICE_NAME ": lock=%08x\n",
+               /* dev_info(pdev, "lock=%08x\n",
                          ngreadl(0x9310)); */
                dvb_ringbuffer_flush(&dev->tsout_rbuf);
                control = 0x80;
                        chan->pBufferExchange = tsin_exchange;
                spin_unlock_irq(&chan->state_lock);
        }
-               /* else printk(KERN_INFO DEVICE_NAME ": lock=%08x\n",
+               /* else dev_info(pdev, "lock=%08x\n",
                           ngreadl(0x9310)); */
 
        mutex_lock(&dev->stream_mutex);
        if (!ret)
                chan->running = state;
        else
-               printk(KERN_ERR DEVICE_NAME ": set_transfer %d failed\n",
-                      state);
+               dev_err(pdev, "%s %d failed\n", __func__, state);
        if (!state) {
                spin_lock_irq(&chan->state_lock);
                chan->pBufferExchange = NULL;
 
 static void ngene_init(struct ngene *dev)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        int i;
 
        tasklet_init(&dev->event_tasklet, event_tasklet, (unsigned long)dev);
        dev->icounts = ngreadl(NGENE_INT_COUNTS);
 
        dev->device_version = ngreadl(DEV_VER) & 0x0f;
-       printk(KERN_INFO DEVICE_NAME ": Device version %d\n",
-              dev->device_version);
+       dev_info(pdev, "Device version %d\n", dev->device_version);
 }
 
 static int ngene_load_firm(struct ngene *dev)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        u32 size;
        const struct firmware *fw = NULL;
        u8 *ngene_fw;
        }
 
        if (request_firmware(&fw, fw_name, &dev->pci_dev->dev) < 0) {
-               printk(KERN_ERR DEVICE_NAME
-                       ": Could not load firmware file %s.\n", fw_name);
-               printk(KERN_INFO DEVICE_NAME
-                       ": Copy %s to your hotplug directory!\n", fw_name);
+               dev_err(pdev, "Could not load firmware file %s.\n", fw_name);
+               dev_info(pdev, "Copy %s to your hotplug directory!\n",
+                        fw_name);
                return -1;
        }
        if (size == 0)
                size = fw->size;
        if (size != fw->size) {
-               printk(KERN_ERR DEVICE_NAME
-                       ": Firmware %s has invalid size!", fw_name);
+               dev_err(pdev, "Firmware %s has invalid size!", fw_name);
                err = -1;
        } else {
-               printk(KERN_INFO DEVICE_NAME
-                       ": Loading firmware file %s.\n", fw_name);
+               dev_info(pdev, "Loading firmware file %s.\n", fw_name);
                ngene_fw = (u8 *) fw->data;
                err = ngene_command_load_firmware(dev, ngene_fw, size);
        }
 
 static int ngene_start(struct ngene *dev)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        int stat;
        int i;
 
                free_irq(dev->pci_dev->irq, dev);
                stat = pci_enable_msi(dev->pci_dev);
                if (stat) {
-                       printk(KERN_INFO DEVICE_NAME
-                               ": MSI not available\n");
+                       dev_info(pdev, "MSI not available\n");
                        flags = IRQF_SHARED;
                } else {
                        flags = 0;
 
 static void cxd_attach(struct ngene *dev)
 {
+       struct device *pdev = &dev->pci_dev->dev;
        struct ngene_ci *ci = &dev->ci;
        struct cxd2099_cfg cxd_cfg = cxd_cfgtmpl;
        struct i2c_client *client;
 err_i2c:
        i2c_unregister_device(client);
 err_ret:
-       printk(KERN_ERR DEVICE_NAME ": CXD2099AR attach failed\n");
+       dev_err(pdev, "CXD2099AR attach failed\n");
        return;
 }
 
        if (!dev || !shutdown_workaround)
                return;
 
-       printk(KERN_INFO DEVICE_NAME ": shutdown workaround...\n");
+       dev_info(&pdev->dev, "shutdown workaround...\n");
        ngene_unlink(dev);
        pci_disable_device(pdev);
 }
 
        dev->pci_dev = pci_dev;
        dev->card_info = (struct ngene_info *)id->driver_data;
-       printk(KERN_INFO DEVICE_NAME ": Found %s\n", dev->card_info->name);
+       dev_info(&pci_dev->dev, "Found %s\n", dev->card_info->name);
 
        pci_set_drvdata(pci_dev, dev);
 
 
                                stripped++;
 
                        if (ok % 100 == 0 && overflow)
-                               printk(KERN_WARNING "%s: ok %u overflow %u dropped %u\n", __func__, ok, overflow, stripped);
+                               dev_warn(&dev->pci_dev->dev,
+                                        "%s: ok %u overflow %u dropped %u\n",
+                                        __func__, ok, overflow, stripped);
 #endif
                        buf += 188;
                        len -= 188;