All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Rob Herring <robh+dt@kernel.org>,
	Fabrizio Castro <fabrizio.castro.jz@renesas.com>,
	Wolfgang Grandegger <wg@grandegger.com>,
	Marc Kleine-Budde <mkl@pengutronix.de>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	linux-can@vger.kernel.org
Cc: clang-built-linux@googlegroups.com, kbuild-all@lists.01.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH v3 2/3] can: rcar_canfd: Add support for RZ/G2L family
Date: Sun, 25 Jul 2021 13:39:37 +0800	[thread overview]
Message-ID: <202107251336.iD47PRoA-lkp@intel.com> (raw)
In-Reply-To: <20210721194951.30983-3-prabhakar.mahadev-lad.rj@bp.renesas.com>

[-- Attachment #1: Type: text/plain, Size: 10231 bytes --]

Hi Lad,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on renesas-devel/next]
[also build test WARNING on v5.14-rc2 next-20210723]
[cannot apply to mkl-can-next/testing robh/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Lad-Prabhakar/Renesas-RZ-G2L-CANFD-support/20210722-035332
base:   https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
config: arm64-randconfig-r031-20210723 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9625ca5b602616b2f5584e8a49ba93c52c141e40)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # https://github.com/0day-ci/linux/commit/082d605e73c5922419a736aa9ecd3a76c0241bf7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Lad-Prabhakar/Renesas-RZ-G2L-CANFD-support/20210722-035332
        git checkout 082d605e73c5922419a736aa9ecd3a76c0241bf7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/net/can/rcar/rcar_canfd.c:1699:12: warning: cast to smaller integer type 'enum rcanfd_chip_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
           chip_id = (enum rcanfd_chip_id)of_device_get_match_data(&pdev->dev);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.


vim +1699 drivers/net/can/rcar/rcar_canfd.c

  1686	
  1687	static int rcar_canfd_probe(struct platform_device *pdev)
  1688	{
  1689		void __iomem *addr;
  1690		u32 sts, ch, fcan_freq;
  1691		struct rcar_canfd_global *gpriv;
  1692		struct device_node *of_child;
  1693		unsigned long channels_mask = 0;
  1694		int err, ch_irq, g_irq;
  1695		int g_err_irq, g_recc_irq;
  1696		bool fdmode = true;			/* CAN FD only mode - default */
  1697		enum rcanfd_chip_id chip_id;
  1698	
> 1699		chip_id = (enum rcanfd_chip_id)of_device_get_match_data(&pdev->dev);
  1700	
  1701		if (of_property_read_bool(pdev->dev.of_node, "renesas,no-can-fd"))
  1702			fdmode = false;			/* Classical CAN only mode */
  1703	
  1704		of_child = of_get_child_by_name(pdev->dev.of_node, "channel0");
  1705		if (of_child && of_device_is_available(of_child))
  1706			channels_mask |= BIT(0);	/* Channel 0 */
  1707	
  1708		of_child = of_get_child_by_name(pdev->dev.of_node, "channel1");
  1709		if (of_child && of_device_is_available(of_child))
  1710			channels_mask |= BIT(1);	/* Channel 1 */
  1711	
  1712		if (chip_id == RENESAS_RCAR_GEN3) {
  1713			ch_irq = platform_get_irq_byname_optional(pdev, "ch_int");
  1714			if (ch_irq < 0) {
  1715				/* For backward compatibility get irq by index */
  1716				ch_irq = platform_get_irq(pdev, 0);
  1717				if (ch_irq < 0)
  1718					return ch_irq;
  1719			}
  1720	
  1721			g_irq = platform_get_irq_byname_optional(pdev, "g_int");
  1722			if (g_irq < 0) {
  1723				/* For backward compatibility get irq by index */
  1724				g_irq = platform_get_irq(pdev, 1);
  1725				if (g_irq < 0)
  1726					return g_irq;
  1727			}
  1728		} else {
  1729			g_err_irq = platform_get_irq_byname(pdev, "g_err");
  1730			if (g_err_irq < 0)
  1731				return g_err_irq;
  1732	
  1733			g_recc_irq = platform_get_irq_byname(pdev, "g_recc");
  1734			if (g_recc_irq < 0)
  1735				return g_recc_irq;
  1736		}
  1737	
  1738		/* Global controller context */
  1739		gpriv = devm_kzalloc(&pdev->dev, sizeof(*gpriv), GFP_KERNEL);
  1740		if (!gpriv) {
  1741			err = -ENOMEM;
  1742			goto fail_dev;
  1743		}
  1744		gpriv->pdev = pdev;
  1745		gpriv->channels_mask = channels_mask;
  1746		gpriv->fdmode = fdmode;
  1747		gpriv->chip_id = chip_id;
  1748	
  1749		if (gpriv->chip_id == RENESAS_RZG2L) {
  1750			gpriv->rstc1 = devm_reset_control_get_exclusive(&pdev->dev, "rstp_n");
  1751			if (IS_ERR(gpriv->rstc1))
  1752				return dev_err_probe(&pdev->dev, PTR_ERR(gpriv->rstc1),
  1753						     "failed to get rstp_n\n");
  1754	
  1755			gpriv->rstc2 = devm_reset_control_get_exclusive(&pdev->dev, "rstc_n");
  1756			if (IS_ERR(gpriv->rstc2))
  1757				return dev_err_probe(&pdev->dev, PTR_ERR(gpriv->rstc2),
  1758						     "failed to get rstc_n\n");
  1759		}
  1760	
  1761		/* Peripheral clock */
  1762		gpriv->clkp = devm_clk_get(&pdev->dev, "fck");
  1763		if (IS_ERR(gpriv->clkp)) {
  1764			err = PTR_ERR(gpriv->clkp);
  1765			dev_err(&pdev->dev, "cannot get peripheral clock, error %d\n",
  1766				err);
  1767			goto fail_dev;
  1768		}
  1769	
  1770		/* fCAN clock: Pick External clock. If not available fallback to
  1771		 * CANFD clock
  1772		 */
  1773		gpriv->can_clk = devm_clk_get(&pdev->dev, "can_clk");
  1774		if (IS_ERR(gpriv->can_clk) || (clk_get_rate(gpriv->can_clk) == 0)) {
  1775			gpriv->can_clk = devm_clk_get(&pdev->dev, "canfd");
  1776			if (IS_ERR(gpriv->can_clk)) {
  1777				err = PTR_ERR(gpriv->can_clk);
  1778				dev_err(&pdev->dev,
  1779					"cannot get canfd clock, error %d\n", err);
  1780				goto fail_dev;
  1781			}
  1782			gpriv->fcan = RCANFD_CANFDCLK;
  1783	
  1784		} else {
  1785			gpriv->fcan = RCANFD_EXTCLK;
  1786		}
  1787		fcan_freq = clk_get_rate(gpriv->can_clk);
  1788	
  1789		if (gpriv->fcan == RCANFD_CANFDCLK && gpriv->chip_id == RENESAS_RCAR_GEN3)
  1790			/* CANFD clock is further divided by (1/2) within the IP */
  1791			fcan_freq /= 2;
  1792	
  1793		addr = devm_platform_ioremap_resource(pdev, 0);
  1794		if (IS_ERR(addr)) {
  1795			err = PTR_ERR(addr);
  1796			goto fail_dev;
  1797		}
  1798		gpriv->base = addr;
  1799	
  1800		/* Request IRQ that's common for both channels */
  1801		if (gpriv->chip_id == RENESAS_RCAR_GEN3) {
  1802			err = devm_request_irq(&pdev->dev, ch_irq,
  1803					       rcar_canfd_channel_interrupt, 0,
  1804					       "canfd.ch_int", gpriv);
  1805			if (err) {
  1806				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1807					ch_irq, err);
  1808				goto fail_dev;
  1809			}
  1810	
  1811			err = devm_request_irq(&pdev->dev, g_irq,
  1812					       rcar_canfd_global_interrupt, 0,
  1813					       "canfd.g_int", gpriv);
  1814			if (err) {
  1815				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1816					g_irq, err);
  1817				goto fail_dev;
  1818			}
  1819		} else {
  1820			err = devm_request_irq(&pdev->dev, g_recc_irq,
  1821					       rcar_canfd_global_interrupt, 0,
  1822					       "canfd.g_recc", gpriv);
  1823	
  1824			if (err) {
  1825				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1826					g_recc_irq, err);
  1827				goto fail_dev;
  1828			}
  1829	
  1830			err = devm_request_irq(&pdev->dev, g_err_irq,
  1831					       rcar_canfd_global_interrupt, 0,
  1832					       "canfd.g_err", gpriv);
  1833			if (err) {
  1834				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1835					g_err_irq, err);
  1836				goto fail_dev;
  1837			}
  1838		}
  1839	
  1840		err = reset_control_reset(gpriv->rstc1);
  1841		if (err)
  1842			goto fail_dev;
  1843		err = reset_control_reset(gpriv->rstc2);
  1844		if (err) {
  1845			reset_control_assert(gpriv->rstc1);
  1846			goto fail_dev;
  1847		}
  1848	
  1849		/* Enable peripheral clock for register access */
  1850		err = clk_prepare_enable(gpriv->clkp);
  1851		if (err) {
  1852			dev_err(&pdev->dev,
  1853				"failed to enable peripheral clock, error %d\n", err);
  1854			goto fail_reset;
  1855		}
  1856	
  1857		err = rcar_canfd_reset_controller(gpriv);
  1858		if (err) {
  1859			dev_err(&pdev->dev, "reset controller failed\n");
  1860			goto fail_clk;
  1861		}
  1862	
  1863		/* Controller in Global reset & Channel reset mode */
  1864		rcar_canfd_configure_controller(gpriv);
  1865	
  1866		/* Configure per channel attributes */
  1867		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS) {
  1868			/* Configure Channel's Rx fifo */
  1869			rcar_canfd_configure_rx(gpriv, ch);
  1870	
  1871			/* Configure Channel's Tx (Common) fifo */
  1872			rcar_canfd_configure_tx(gpriv, ch);
  1873	
  1874			/* Configure receive rules */
  1875			rcar_canfd_configure_afl_rules(gpriv, ch);
  1876		}
  1877	
  1878		/* Configure common interrupts */
  1879		rcar_canfd_enable_global_interrupts(gpriv);
  1880	
  1881		/* Start Global operation mode */
  1882		rcar_canfd_update_bit(gpriv->base, RCANFD_GCTR, RCANFD_GCTR_GMDC_MASK,
  1883				      RCANFD_GCTR_GMDC_GOPM);
  1884	
  1885		/* Verify mode change */
  1886		err = readl_poll_timeout((gpriv->base + RCANFD_GSTS), sts,
  1887					 !(sts & RCANFD_GSTS_GNOPM), 2, 500000);
  1888		if (err) {
  1889			dev_err(&pdev->dev, "global operational mode failed\n");
  1890			goto fail_mode;
  1891		}
  1892	
  1893		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS) {
  1894			err = rcar_canfd_channel_probe(gpriv, ch, fcan_freq);
  1895			if (err)
  1896				goto fail_channel;
  1897		}
  1898	
  1899		platform_set_drvdata(pdev, gpriv);
  1900		dev_info(&pdev->dev, "global operational state (clk %d, fdmode %d)\n",
  1901			 gpriv->fcan, gpriv->fdmode);
  1902		return 0;
  1903	
  1904	fail_channel:
  1905		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS)
  1906			rcar_canfd_channel_remove(gpriv, ch);
  1907	fail_mode:
  1908		rcar_canfd_disable_global_interrupts(gpriv);
  1909	fail_clk:
  1910		clk_disable_unprepare(gpriv->clkp);
  1911	fail_reset:
  1912		reset_control_assert(gpriv->rstc1);
  1913		reset_control_assert(gpriv->rstc2);
  1914	fail_dev:
  1915		return err;
  1916	}
  1917	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 51713 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3 2/3] can: rcar_canfd: Add support for RZ/G2L family
Date: Sun, 25 Jul 2021 13:39:37 +0800	[thread overview]
Message-ID: <202107251336.iD47PRoA-lkp@intel.com> (raw)
In-Reply-To: <20210721194951.30983-3-prabhakar.mahadev-lad.rj@bp.renesas.com>

[-- Attachment #1: Type: text/plain, Size: 10509 bytes --]

Hi Lad,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on renesas-devel/next]
[also build test WARNING on v5.14-rc2 next-20210723]
[cannot apply to mkl-can-next/testing robh/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Lad-Prabhakar/Renesas-RZ-G2L-CANFD-support/20210722-035332
base:   https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
config: arm64-randconfig-r031-20210723 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9625ca5b602616b2f5584e8a49ba93c52c141e40)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # https://github.com/0day-ci/linux/commit/082d605e73c5922419a736aa9ecd3a76c0241bf7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Lad-Prabhakar/Renesas-RZ-G2L-CANFD-support/20210722-035332
        git checkout 082d605e73c5922419a736aa9ecd3a76c0241bf7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/net/can/rcar/rcar_canfd.c:1699:12: warning: cast to smaller integer type 'enum rcanfd_chip_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
           chip_id = (enum rcanfd_chip_id)of_device_get_match_data(&pdev->dev);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.


vim +1699 drivers/net/can/rcar/rcar_canfd.c

  1686	
  1687	static int rcar_canfd_probe(struct platform_device *pdev)
  1688	{
  1689		void __iomem *addr;
  1690		u32 sts, ch, fcan_freq;
  1691		struct rcar_canfd_global *gpriv;
  1692		struct device_node *of_child;
  1693		unsigned long channels_mask = 0;
  1694		int err, ch_irq, g_irq;
  1695		int g_err_irq, g_recc_irq;
  1696		bool fdmode = true;			/* CAN FD only mode - default */
  1697		enum rcanfd_chip_id chip_id;
  1698	
> 1699		chip_id = (enum rcanfd_chip_id)of_device_get_match_data(&pdev->dev);
  1700	
  1701		if (of_property_read_bool(pdev->dev.of_node, "renesas,no-can-fd"))
  1702			fdmode = false;			/* Classical CAN only mode */
  1703	
  1704		of_child = of_get_child_by_name(pdev->dev.of_node, "channel0");
  1705		if (of_child && of_device_is_available(of_child))
  1706			channels_mask |= BIT(0);	/* Channel 0 */
  1707	
  1708		of_child = of_get_child_by_name(pdev->dev.of_node, "channel1");
  1709		if (of_child && of_device_is_available(of_child))
  1710			channels_mask |= BIT(1);	/* Channel 1 */
  1711	
  1712		if (chip_id == RENESAS_RCAR_GEN3) {
  1713			ch_irq = platform_get_irq_byname_optional(pdev, "ch_int");
  1714			if (ch_irq < 0) {
  1715				/* For backward compatibility get irq by index */
  1716				ch_irq = platform_get_irq(pdev, 0);
  1717				if (ch_irq < 0)
  1718					return ch_irq;
  1719			}
  1720	
  1721			g_irq = platform_get_irq_byname_optional(pdev, "g_int");
  1722			if (g_irq < 0) {
  1723				/* For backward compatibility get irq by index */
  1724				g_irq = platform_get_irq(pdev, 1);
  1725				if (g_irq < 0)
  1726					return g_irq;
  1727			}
  1728		} else {
  1729			g_err_irq = platform_get_irq_byname(pdev, "g_err");
  1730			if (g_err_irq < 0)
  1731				return g_err_irq;
  1732	
  1733			g_recc_irq = platform_get_irq_byname(pdev, "g_recc");
  1734			if (g_recc_irq < 0)
  1735				return g_recc_irq;
  1736		}
  1737	
  1738		/* Global controller context */
  1739		gpriv = devm_kzalloc(&pdev->dev, sizeof(*gpriv), GFP_KERNEL);
  1740		if (!gpriv) {
  1741			err = -ENOMEM;
  1742			goto fail_dev;
  1743		}
  1744		gpriv->pdev = pdev;
  1745		gpriv->channels_mask = channels_mask;
  1746		gpriv->fdmode = fdmode;
  1747		gpriv->chip_id = chip_id;
  1748	
  1749		if (gpriv->chip_id == RENESAS_RZG2L) {
  1750			gpriv->rstc1 = devm_reset_control_get_exclusive(&pdev->dev, "rstp_n");
  1751			if (IS_ERR(gpriv->rstc1))
  1752				return dev_err_probe(&pdev->dev, PTR_ERR(gpriv->rstc1),
  1753						     "failed to get rstp_n\n");
  1754	
  1755			gpriv->rstc2 = devm_reset_control_get_exclusive(&pdev->dev, "rstc_n");
  1756			if (IS_ERR(gpriv->rstc2))
  1757				return dev_err_probe(&pdev->dev, PTR_ERR(gpriv->rstc2),
  1758						     "failed to get rstc_n\n");
  1759		}
  1760	
  1761		/* Peripheral clock */
  1762		gpriv->clkp = devm_clk_get(&pdev->dev, "fck");
  1763		if (IS_ERR(gpriv->clkp)) {
  1764			err = PTR_ERR(gpriv->clkp);
  1765			dev_err(&pdev->dev, "cannot get peripheral clock, error %d\n",
  1766				err);
  1767			goto fail_dev;
  1768		}
  1769	
  1770		/* fCAN clock: Pick External clock. If not available fallback to
  1771		 * CANFD clock
  1772		 */
  1773		gpriv->can_clk = devm_clk_get(&pdev->dev, "can_clk");
  1774		if (IS_ERR(gpriv->can_clk) || (clk_get_rate(gpriv->can_clk) == 0)) {
  1775			gpriv->can_clk = devm_clk_get(&pdev->dev, "canfd");
  1776			if (IS_ERR(gpriv->can_clk)) {
  1777				err = PTR_ERR(gpriv->can_clk);
  1778				dev_err(&pdev->dev,
  1779					"cannot get canfd clock, error %d\n", err);
  1780				goto fail_dev;
  1781			}
  1782			gpriv->fcan = RCANFD_CANFDCLK;
  1783	
  1784		} else {
  1785			gpriv->fcan = RCANFD_EXTCLK;
  1786		}
  1787		fcan_freq = clk_get_rate(gpriv->can_clk);
  1788	
  1789		if (gpriv->fcan == RCANFD_CANFDCLK && gpriv->chip_id == RENESAS_RCAR_GEN3)
  1790			/* CANFD clock is further divided by (1/2) within the IP */
  1791			fcan_freq /= 2;
  1792	
  1793		addr = devm_platform_ioremap_resource(pdev, 0);
  1794		if (IS_ERR(addr)) {
  1795			err = PTR_ERR(addr);
  1796			goto fail_dev;
  1797		}
  1798		gpriv->base = addr;
  1799	
  1800		/* Request IRQ that's common for both channels */
  1801		if (gpriv->chip_id == RENESAS_RCAR_GEN3) {
  1802			err = devm_request_irq(&pdev->dev, ch_irq,
  1803					       rcar_canfd_channel_interrupt, 0,
  1804					       "canfd.ch_int", gpriv);
  1805			if (err) {
  1806				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1807					ch_irq, err);
  1808				goto fail_dev;
  1809			}
  1810	
  1811			err = devm_request_irq(&pdev->dev, g_irq,
  1812					       rcar_canfd_global_interrupt, 0,
  1813					       "canfd.g_int", gpriv);
  1814			if (err) {
  1815				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1816					g_irq, err);
  1817				goto fail_dev;
  1818			}
  1819		} else {
  1820			err = devm_request_irq(&pdev->dev, g_recc_irq,
  1821					       rcar_canfd_global_interrupt, 0,
  1822					       "canfd.g_recc", gpriv);
  1823	
  1824			if (err) {
  1825				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1826					g_recc_irq, err);
  1827				goto fail_dev;
  1828			}
  1829	
  1830			err = devm_request_irq(&pdev->dev, g_err_irq,
  1831					       rcar_canfd_global_interrupt, 0,
  1832					       "canfd.g_err", gpriv);
  1833			if (err) {
  1834				dev_err(&pdev->dev, "devm_request_irq(%d) failed, error %d\n",
  1835					g_err_irq, err);
  1836				goto fail_dev;
  1837			}
  1838		}
  1839	
  1840		err = reset_control_reset(gpriv->rstc1);
  1841		if (err)
  1842			goto fail_dev;
  1843		err = reset_control_reset(gpriv->rstc2);
  1844		if (err) {
  1845			reset_control_assert(gpriv->rstc1);
  1846			goto fail_dev;
  1847		}
  1848	
  1849		/* Enable peripheral clock for register access */
  1850		err = clk_prepare_enable(gpriv->clkp);
  1851		if (err) {
  1852			dev_err(&pdev->dev,
  1853				"failed to enable peripheral clock, error %d\n", err);
  1854			goto fail_reset;
  1855		}
  1856	
  1857		err = rcar_canfd_reset_controller(gpriv);
  1858		if (err) {
  1859			dev_err(&pdev->dev, "reset controller failed\n");
  1860			goto fail_clk;
  1861		}
  1862	
  1863		/* Controller in Global reset & Channel reset mode */
  1864		rcar_canfd_configure_controller(gpriv);
  1865	
  1866		/* Configure per channel attributes */
  1867		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS) {
  1868			/* Configure Channel's Rx fifo */
  1869			rcar_canfd_configure_rx(gpriv, ch);
  1870	
  1871			/* Configure Channel's Tx (Common) fifo */
  1872			rcar_canfd_configure_tx(gpriv, ch);
  1873	
  1874			/* Configure receive rules */
  1875			rcar_canfd_configure_afl_rules(gpriv, ch);
  1876		}
  1877	
  1878		/* Configure common interrupts */
  1879		rcar_canfd_enable_global_interrupts(gpriv);
  1880	
  1881		/* Start Global operation mode */
  1882		rcar_canfd_update_bit(gpriv->base, RCANFD_GCTR, RCANFD_GCTR_GMDC_MASK,
  1883				      RCANFD_GCTR_GMDC_GOPM);
  1884	
  1885		/* Verify mode change */
  1886		err = readl_poll_timeout((gpriv->base + RCANFD_GSTS), sts,
  1887					 !(sts & RCANFD_GSTS_GNOPM), 2, 500000);
  1888		if (err) {
  1889			dev_err(&pdev->dev, "global operational mode failed\n");
  1890			goto fail_mode;
  1891		}
  1892	
  1893		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS) {
  1894			err = rcar_canfd_channel_probe(gpriv, ch, fcan_freq);
  1895			if (err)
  1896				goto fail_channel;
  1897		}
  1898	
  1899		platform_set_drvdata(pdev, gpriv);
  1900		dev_info(&pdev->dev, "global operational state (clk %d, fdmode %d)\n",
  1901			 gpriv->fcan, gpriv->fdmode);
  1902		return 0;
  1903	
  1904	fail_channel:
  1905		for_each_set_bit(ch, &gpriv->channels_mask, RCANFD_NUM_CHANNELS)
  1906			rcar_canfd_channel_remove(gpriv, ch);
  1907	fail_mode:
  1908		rcar_canfd_disable_global_interrupts(gpriv);
  1909	fail_clk:
  1910		clk_disable_unprepare(gpriv->clkp);
  1911	fail_reset:
  1912		reset_control_assert(gpriv->rstc1);
  1913		reset_control_assert(gpriv->rstc2);
  1914	fail_dev:
  1915		return err;
  1916	}
  1917	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 51713 bytes --]

  reply	other threads:[~2021-07-25  5:40 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-21 19:49 [PATCH v3 0/3] Renesas RZ/G2L CANFD support Lad Prabhakar
2021-07-21 19:49 ` [PATCH v3 1/3] dt-bindings: net: can: renesas,rcar-canfd: Document RZ/G2L SoC Lad Prabhakar
2021-07-26 22:46   ` Rob Herring
2021-07-21 19:49 ` [PATCH v3 2/3] can: rcar_canfd: Add support for RZ/G2L family Lad Prabhakar
2021-07-25  5:39   ` kernel test robot [this message]
2021-07-25  5:39     ` kernel test robot
2021-07-25  9:46     ` Marc Kleine-Budde
2021-07-25  9:46       ` Marc Kleine-Budde
2021-07-26  8:06       ` Geert Uytterhoeven
2021-07-26  8:06         ` Geert Uytterhoeven
2021-07-26 21:56         ` Lad, Prabhakar
2021-07-26 21:56           ` Lad, Prabhakar
2021-07-26  9:53   ` Geert Uytterhoeven
2021-07-26 21:58     ` Lad, Prabhakar
2021-07-21 19:49 ` [PATCH v3 3/3] arm64: dts: renesas: r9a07g044: Add CANFD node Lad Prabhakar
2021-07-22 12:53   ` kernel test robot
2021-07-22 12:53     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202107251336.iD47PRoA-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=davem@davemloft.net \
    --cc=fabrizio.castro.jz@renesas.com \
    --cc=geert+renesas@glider.be \
    --cc=kbuild-all@lists.01.org \
    --cc=kuba@kernel.org \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=robh+dt@kernel.org \
    --cc=wg@grandegger.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.