diff options
Diffstat (limited to 'drivers/media/cec/platform/seco/seco-cec.c')
| -rw-r--r-- | drivers/media/cec/platform/seco/seco-cec.c | 85 |
1 files changed, 35 insertions, 50 deletions
diff --git a/drivers/media/cec/platform/seco/seco-cec.c b/drivers/media/cec/platform/seco/seco-cec.c index 075dd79beb6f..b7bb49f02395 100644 --- a/drivers/media/cec/platform/seco/seco-cec.c +++ b/drivers/media/cec/platform/seco/seco-cec.c @@ -12,7 +12,6 @@ #include <linux/delay.h> #include <linux/dmi.h> #include <linux/gpio/consumer.h> -#include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/pci.h> #include <linux/platform_device.h> @@ -32,29 +31,17 @@ struct secocec_data { int irq; }; -#define smb_wr16(cmd, data) smb_word_op(CMD_WORD_DATA, SECOCEC_MICRO_ADDRESS, \ - cmd, data, SMBUS_WRITE, NULL) -#define smb_rd16(cmd, res) smb_word_op(CMD_WORD_DATA, SECOCEC_MICRO_ADDRESS, \ +#define smb_wr16(cmd, data) smb_word_op(SECOCEC_MICRO_ADDRESS, \ + cmd, data, SMBUS_WRITE, NULL) +#define smb_rd16(cmd, res) smb_word_op(SECOCEC_MICRO_ADDRESS, \ cmd, 0, SMBUS_READ, res) -static int smb_word_op(short data_format, u16 slave_addr, u8 cmd, u16 data, +static int smb_word_op(u16 slave_addr, u8 cmd, u16 data, u8 operation, u16 *result) { unsigned int count; - short _data_format; int status = 0; - switch (data_format) { - case CMD_BYTE_DATA: - _data_format = BRA_SMB_CMD_BYTE_DATA; - break; - case CMD_WORD_DATA: - _data_format = BRA_SMB_CMD_WORD_DATA; - break; - default: - return -EINVAL; - } - /* Active wait until ready */ for (count = 0; count <= SMBTIMEOUT; ++count) { if (!(inb(HSTS) & BRA_INUSE_STS)) @@ -76,7 +63,7 @@ static int smb_word_op(short data_format, u16 slave_addr, u8 cmd, u16 data, outb((u8)(data >> 8), HDAT1); } - outb(BRA_START + _data_format, HCNT); + outb(BRA_START + BRA_SMB_CMD_WORD_DATA, HCNT); for (count = 0; count <= SMBTIMEOUT; count++) { if (!(inb(HSTS) & BRA_HOST_BUSY)) @@ -129,7 +116,7 @@ static int secocec_adap_enable(struct cec_adapter *adap, bool enable) if (status) goto err; - dev_dbg(dev, "Device enabled"); + dev_dbg(dev, "Device enabled\n"); } else { /* Clear the status register */ status = smb_rd16(SECOCEC_STATUS_REG_1, &val); @@ -141,7 +128,7 @@ static int secocec_adap_enable(struct cec_adapter *adap, bool enable) ~SECOCEC_ENABLE_REG_1_CEC & ~SECOCEC_ENABLE_REG_1_IR); - dev_dbg(dev, "Device disabled"); + dev_dbg(dev, "Device disabled\n"); } return 0; @@ -264,12 +251,12 @@ static void secocec_rx_done(struct cec_adapter *adap, u16 status_val) if (status_val & SECOCEC_STATUS_RX_OVERFLOW_MASK) { /* NOTE: Untested, it also might not be necessary */ - dev_warn(dev, "Received more than 16 bytes. Discarding"); + dev_warn(dev, "Received more than 16 bytes. Discarding\n"); flag_overflow = true; } if (status_val & SECOCEC_STATUS_RX_ERROR_MASK) { - dev_warn(dev, "Message received with errors. Discarding"); + dev_warn(dev, "Message received with errors. Discarding\n"); status = -EIO; goto rxerr; } @@ -369,7 +356,7 @@ static int secocec_ir_probe(void *priv) cec->ir->allowed_protocols = RC_PROTO_BIT_RC5; cec->ir->priv = cec; cec->ir->map_name = RC_MAP_HAUPPAUGE; - cec->ir->timeout = MS_TO_NS(100); + cec->ir->timeout = MS_TO_US(100); /* Clear the status register */ status = smb_rd16(SECOCEC_STATUS_REG_1, &val); @@ -390,12 +377,12 @@ static int secocec_ir_probe(void *priv) if (status != 0) goto err; - dev_dbg(dev, "IR enabled"); + dev_dbg(dev, "IR enabled\n"); status = devm_rc_register_device(dev, cec->ir); if (status) { - dev_err(dev, "Failed to prepare input device"); + dev_err(dev, "Failed to prepare input device\n"); cec->ir = NULL; goto err; } @@ -408,7 +395,7 @@ err: smb_wr16(SECOCEC_ENABLE_REG_1, val & ~SECOCEC_ENABLE_REG_1_IR); - dev_dbg(dev, "IR disabled"); + dev_dbg(dev, "IR disabled\n"); return status; } @@ -431,13 +418,13 @@ static int secocec_ir_rx(struct secocec_data *priv) rc_keydown(cec->ir, RC_PROTO_RC5, RC_SCANCODE_RC5(addr, key), toggle); - dev_dbg(dev, "IR key pressed: 0x%02x addr 0x%02x toggle 0x%02x", key, + dev_dbg(dev, "IR key pressed: 0x%02x addr 0x%02x toggle 0x%02x\n", key, addr, toggle); return 0; err: - dev_err(dev, "IR Receive message failed (%d)", status); + dev_err(dev, "IR Receive message failed (%d)\n", status); return -EIO; } #else @@ -497,7 +484,7 @@ static irqreturn_t secocec_irq_handler(int irq, void *priv) return IRQ_HANDLED; err: - dev_err_once(dev, "IRQ: R/W SMBus operation failed (%d)", status); + dev_err_once(dev, "IRQ: R/W SMBus operation failed %d\n", status); /* Reset status register */ val = SECOCEC_STATUS_REG_1_CEC | SECOCEC_STATUS_REG_1_IR; @@ -551,18 +538,18 @@ static int secocec_acpi_probe(struct secocec_data *sdev) struct gpio_desc *gpio; int irq = 0; - gpio = devm_gpiod_get(dev, NULL, GPIOF_IN); + gpio = devm_gpiod_get(dev, NULL, GPIOD_IN); if (IS_ERR(gpio)) { - dev_err(dev, "Cannot request interrupt gpio"); + dev_err(dev, "Cannot request interrupt gpio\n"); return PTR_ERR(gpio); } irq = gpiod_to_irq(gpio); if (irq < 0) { - dev_err(dev, "Cannot find valid irq"); + dev_err(dev, "Cannot find valid irq\n"); return -ENODEV; } - dev_dbg(dev, "irq-gpio is bound to IRQ %d", irq); + dev_dbg(dev, "irq-gpio is bound to IRQ %d\n", irq); sdev->irq = irq; @@ -590,7 +577,7 @@ static int secocec_probe(struct platform_device *pdev) /* Request SMBus regions */ if (!request_muxed_region(BRA_SMB_BASE_ADDR, 7, "CEC00001")) { - dev_err(dev, "Request memory region failed"); + dev_err(dev, "Request memory region failed\n"); return -ENXIO; } @@ -598,14 +585,14 @@ static int secocec_probe(struct platform_device *pdev) secocec->dev = dev; if (!has_acpi_companion(dev)) { - dev_dbg(dev, "Cannot find any ACPI companion"); + dev_dbg(dev, "Cannot find any ACPI companion\n"); ret = -ENODEV; goto err; } ret = secocec_acpi_probe(secocec); if (ret) { - dev_err(dev, "Cannot assign gpio to IRQ"); + dev_err(dev, "Cannot assign gpio to IRQ\n"); ret = -ENODEV; goto err; } @@ -613,11 +600,11 @@ static int secocec_probe(struct platform_device *pdev) /* Firmware version check */ ret = smb_rd16(SECOCEC_VERSION, &val); if (ret) { - dev_err(dev, "Cannot check fw version"); + dev_err(dev, "Cannot check fw version\n"); goto err; } if (val < SECOCEC_LATEST_FW) { - dev_err(dev, "CEC Firmware not supported (v.%04x). Use ver > v.%04x", + dev_err(dev, "CEC Firmware not supported (v.%04x). Use ver > v.%04x\n", val, SECOCEC_LATEST_FW); ret = -EINVAL; goto err; @@ -631,7 +618,7 @@ static int secocec_probe(struct platform_device *pdev) dev_name(&pdev->dev), secocec); if (ret) { - dev_err(dev, "Cannot request IRQ %d", secocec->irq); + dev_err(dev, "Cannot request IRQ %d\n", secocec->irq); ret = -EIO; goto err; } @@ -666,7 +653,7 @@ static int secocec_probe(struct platform_device *pdev) platform_set_drvdata(pdev, secocec); - dev_dbg(dev, "Device registered"); + dev_dbg(dev, "Device registered\n"); return ret; @@ -681,7 +668,7 @@ err: return ret; } -static int secocec_remove(struct platform_device *pdev) +static void secocec_remove(struct platform_device *pdev) { struct secocec_data *secocec = platform_get_drvdata(pdev); u16 val; @@ -691,16 +678,14 @@ static int secocec_remove(struct platform_device *pdev) smb_wr16(SECOCEC_ENABLE_REG_1, val & ~SECOCEC_ENABLE_REG_1_IR); - dev_dbg(&pdev->dev, "IR disabled"); + dev_dbg(&pdev->dev, "IR disabled\n"); } cec_notifier_cec_adap_unregister(secocec->notifier, secocec->cec_adap); cec_unregister_adapter(secocec->cec_adap); release_region(BRA_SMB_BASE_ADDR, 7); - dev_dbg(&pdev->dev, "CEC device removed"); - - return 0; + dev_dbg(&pdev->dev, "CEC device removed\n"); } #ifdef CONFIG_PM_SLEEP @@ -709,7 +694,7 @@ static int secocec_suspend(struct device *dev) int status; u16 val; - dev_dbg(dev, "Device going to suspend, disabling"); + dev_dbg(dev, "Device going to suspend, disabling\n"); /* Clear the status register */ status = smb_rd16(SECOCEC_STATUS_REG_1, &val); @@ -733,7 +718,7 @@ static int secocec_suspend(struct device *dev) return 0; err: - dev_err(dev, "Suspend failed (err: %d)", status); + dev_err(dev, "Suspend failed: %d\n", status); return status; } @@ -742,7 +727,7 @@ static int secocec_resume(struct device *dev) int status; u16 val; - dev_dbg(dev, "Resuming device from suspend"); + dev_dbg(dev, "Resuming device from suspend\n"); /* Clear the status register */ status = smb_rd16(SECOCEC_STATUS_REG_1, &val); @@ -762,12 +747,12 @@ static int secocec_resume(struct device *dev) if (status) goto err; - dev_dbg(dev, "Device resumed from suspend"); + dev_dbg(dev, "Device resumed from suspend\n"); return 0; err: - dev_err(dev, "Resume failed (err: %d)", status); + dev_err(dev, "Resume failed: %d\n", status); return status; } |
