Hi Russell,

I love your patch! Yet something to improve:

[auto build test ERROR on arm/drm-tda998x-devel]
[cannot apply to v4.18-rc3 next-20180706]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Russell-King/drm-i2c-tda998x-find-the-drm_device-via-the-drm_connector/20180707-030507
base:   git://git.armlinux.org.uk/~rmk/linux-arm.git drm-tda998x-devel
config: i386-randconfig-x018-201826 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i2c/tda998x_drv.c: In function 'tda998x_bridge_disable':
   drivers/gpu/drm/i2c/tda998x_drv.c:1336:7: error: 'priv' undeclared (first 
use in this function); did you mean 'pid'?
     if (!priv->is_on) {
          ^~~~
          pid
   drivers/gpu/drm/i2c/tda998x_drv.c:1336:7: note: each undeclared identifier 
is reported only once for each function it appears in
   drivers/gpu/drm/i2c/tda998x_drv.c: In function 'tda998x_create':
>> drivers/gpu/drm/i2c/tda998x_drv.c:1827:14: error: 'struct drm_bridge' has no 
>> member named 'of_node'
     priv->bridge.of_node = dev->of_node;
                 ^
   drivers/gpu/drm/i2c/tda998x_drv.c:1827:25: error: 'dev' undeclared (first 
use in this function); did you mean 'cdev'?
     priv->bridge.of_node = dev->of_node;
                            ^~~
                            cdev
   drivers/gpu/drm/i2c/tda998x_drv.c: In function 'tda998x_bind':
   drivers/gpu/drm/i2c/tda998x_drv.c:1908:1: warning: label 'err_encoder' 
defined but not used [-Wunused-label]
    err_encoder:
    ^~~~~~~~~~~

vim +1827 drivers/gpu/drm/i2c/tda998x_drv.c

  1650  
  1651  static int tda998x_create(struct i2c_client *client, struct 
tda998x_priv *priv)
  1652  {
  1653          struct device_node *np = client->dev.of_node;
  1654          struct i2c_board_info cec_info;
  1655          u32 video;
  1656          int rev_lo, rev_hi, ret;
  1657  
  1658          mutex_init(&priv->mutex);       /* protect the page access */
  1659          mutex_init(&priv->audio_mutex); /* protect access from audio 
thread */
  1660          mutex_init(&priv->edid_mutex);
  1661          INIT_LIST_HEAD(&priv->bridge.list);
  1662          init_waitqueue_head(&priv->edid_delay_waitq);
  1663          timer_setup(&priv->edid_delay_timer, tda998x_edid_delay_done, 
0);
  1664          INIT_WORK(&priv->detect_work, tda998x_detect_work);
  1665  
  1666          priv->vip_cntrl_0 = VIP_CNTRL_0_SWAP_A(2) | 
VIP_CNTRL_0_SWAP_B(3);
  1667          priv->vip_cntrl_1 = VIP_CNTRL_1_SWAP_C(0) | 
VIP_CNTRL_1_SWAP_D(1);
  1668          priv->vip_cntrl_2 = VIP_CNTRL_2_SWAP_E(4) | 
VIP_CNTRL_2_SWAP_F(5);
  1669  
  1670          /* CEC I2C address bound to TDA998x I2C addr by configuration 
pins */
  1671          priv->cec_addr = 0x34 + (client->addr & 0x03);
  1672          priv->current_page = 0xff;
  1673          priv->hdmi = client;
  1674  
  1675          /* wake up the device: */
  1676          cec_write(priv, REG_CEC_ENAMODS,
  1677                          CEC_ENAMODS_EN_RXSENS | CEC_ENAMODS_EN_HDMI);
  1678  
  1679          tda998x_reset(priv);
  1680  
  1681          /* read version: */
  1682          rev_lo = reg_read(priv, REG_VERSION_LSB);
  1683          if (rev_lo < 0) {
  1684                  dev_err(&client->dev, "failed to read version: %d\n", 
rev_lo);
  1685                  return rev_lo;
  1686          }
  1687  
  1688          rev_hi = reg_read(priv, REG_VERSION_MSB);
  1689          if (rev_hi < 0) {
  1690                  dev_err(&client->dev, "failed to read version: %d\n", 
rev_hi);
  1691                  return rev_hi;
  1692          }
  1693  
  1694          priv->rev = rev_lo | rev_hi << 8;
  1695  
  1696          /* mask off feature bits: */
  1697          priv->rev &= ~0x30; /* not-hdcp and not-scalar bit */
  1698  
  1699          switch (priv->rev) {
  1700          case TDA9989N2:
  1701                  dev_info(&client->dev, "found TDA9989 n2");
  1702                  break;
  1703          case TDA19989:
  1704                  dev_info(&client->dev, "found TDA19989");
  1705                  break;
  1706          case TDA19989N2:
  1707                  dev_info(&client->dev, "found TDA19989 n2");
  1708                  break;
  1709          case TDA19988:
  1710                  dev_info(&client->dev, "found TDA19988");
  1711                  break;
  1712          default:
  1713                  dev_err(&client->dev, "found unsupported device: 
%04x\n",
  1714                          priv->rev);
  1715                  return -ENXIO;
  1716          }
  1717  
  1718          /* after reset, enable DDC: */
  1719          reg_write(priv, REG_DDC_DISABLE, 0x00);
  1720  
  1721          /* set clock on DDC channel: */
  1722          reg_write(priv, REG_TX3, 39);
  1723  
  1724          /* if necessary, disable multi-master: */
  1725          if (priv->rev == TDA19989)
  1726                  reg_set(priv, REG_I2C_MASTER, I2C_MASTER_DIS_MM);
  1727  
  1728          cec_write(priv, REG_CEC_FRO_IM_CLK_CTRL,
  1729                          CEC_FRO_IM_CLK_CTRL_GHOST_DIS | 
CEC_FRO_IM_CLK_CTRL_IMCLK_SEL);
  1730  
  1731          /* ensure interrupts are disabled */
  1732          cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
  1733  
  1734          /* clear pending interrupts */
  1735          cec_read(priv, REG_CEC_RXSHPDINT);
  1736          reg_read(priv, REG_INT_FLAGS_0);
  1737          reg_read(priv, REG_INT_FLAGS_1);
  1738          reg_read(priv, REG_INT_FLAGS_2);
  1739  
  1740          /* initialize the optional IRQ */
  1741          if (client->irq) {
  1742                  unsigned long irq_flags;
  1743  
  1744                  /* init read EDID waitqueue and HDP work */
  1745                  init_waitqueue_head(&priv->wq_edid);
  1746  
  1747                  irq_flags =
  1748                          
irqd_get_trigger_type(irq_get_irq_data(client->irq));
  1749  
  1750                  priv->cec_glue.irq_flags = irq_flags;
  1751  
  1752                  irq_flags |= IRQF_SHARED | IRQF_ONESHOT;
  1753                  ret = request_threaded_irq(client->irq, NULL,
  1754                                             tda998x_irq_thread, 
irq_flags,
  1755                                             "tda998x", priv);
  1756                  if (ret) {
  1757                          dev_err(&client->dev,
  1758                                  "failed to request IRQ#%u: %d\n",
  1759                                  client->irq, ret);
  1760                          goto err_irq;
  1761                  }
  1762  
  1763                  /* enable HPD irq */
  1764                  cec_write(priv, REG_CEC_RXSHPDINTENA, 
CEC_RXSHPDLEV_HPD);
  1765          }
  1766  
  1767          priv->cec_notify = cec_notifier_get(&client->dev);
  1768          if (!priv->cec_notify) {
  1769                  ret = -ENOMEM;
  1770                  goto fail;
  1771          }
  1772  
  1773          priv->cec_glue.parent = &client->dev;
  1774          priv->cec_glue.data = priv;
  1775          priv->cec_glue.init = tda998x_cec_hook_init;
  1776          priv->cec_glue.exit = tda998x_cec_hook_exit;
  1777          priv->cec_glue.open = tda998x_cec_hook_open;
  1778          priv->cec_glue.release = tda998x_cec_hook_release;
  1779  
  1780          /*
  1781           * Some TDA998x are actually two I2C devices merged onto one 
piece
  1782           * of silicon: TDA9989 and TDA19989 combine the HDMI transmitter
  1783           * with a slightly modified TDA9950 CEC device.  The CEC device
  1784           * is at the TDA9950 address, with the address pins strapped 
across
  1785           * to the TDA998x address pins.  Hence, it always has the same
  1786           * offset.
  1787           */
  1788          memset(&cec_info, 0, sizeof(cec_info));
  1789          strlcpy(cec_info.type, "tda9950", sizeof(cec_info.type));
  1790          cec_info.addr = priv->cec_addr;
  1791          cec_info.platform_data = &priv->cec_glue;
  1792          cec_info.irq = client->irq;
  1793  
  1794          priv->cec = i2c_new_device(client->adapter, &cec_info);
  1795          if (!priv->cec) {
  1796                  ret = -ENODEV;
  1797                  goto fail;
  1798          }
  1799  
  1800          /* enable EDID read irq: */
  1801          reg_set(priv, REG_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
  1802  
  1803          if (np) {
  1804                  /* get the device tree parameters */
  1805                  ret = of_property_read_u32(np, "video-ports", &video);
  1806                  if (ret == 0) {
  1807                          priv->vip_cntrl_0 = video >> 16;
  1808                          priv->vip_cntrl_1 = video >> 8;
  1809                          priv->vip_cntrl_2 = video;
  1810                  }
  1811  
  1812                  ret = tda998x_get_audio_ports(priv, np);
  1813                  if (ret)
  1814                          goto fail;
  1815  
  1816                  if (priv->audio_port[0].format != AFMT_UNUSED)
  1817                          tda998x_audio_codec_init(priv, &client->dev);
  1818          } else {
  1819                  struct tda998x_encoder_params *params;
  1820  
  1821                  params = client->dev.platform_data;
  1822                  if (params)
  1823                          tda998x_set_config(priv, params);
  1824          }
  1825  
  1826          priv->bridge.funcs = &tda998x_bridge_funcs;
> 1827          priv->bridge.of_node = dev->of_node;
  1828  
  1829          drm_bridge_add(&priv->bridge);
  1830  
  1831          return 0;
  1832  
  1833  fail:
  1834          tda998x_destroy(priv);
  1835  err_irq:
  1836          return ret;
  1837  }
  1838  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to