All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jakob Hauser <jahau@rocketmail.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Lee Jones <lee@kernel.org>
Subject: [linux-next:master 10528/12208] drivers/power/supply/rt5033_charger.c:696: undefined reference to `extcon_find_edev_by_node'
Date: Thu, 24 Aug 2023 07:18:20 +0800	[thread overview]
Message-ID: <202308240723.O2rW0InU-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   e3f80d3eae76c3557b3c9b5938ad01c0e6cf25ec
commit: 12cc585f36b8dffa68b809c2d23a9bd73ee6ffd2 [10528/12208] power: supply: rt5033_charger: Add cable detection and USB OTG supply
config: x86_64-randconfig-r011-20230823 (https://download.01.org/0day-ci/archive/20230824/202308240723.O2rW0InU-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230824/202308240723.O2rW0InU-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308240723.O2rW0InU-lkp@intel.com/

All errors (new ones prefixed by >>):

   ld: vmlinux.o: in function `rt5033_charger_probe':
>> drivers/power/supply/rt5033_charger.c:696: undefined reference to `extcon_find_edev_by_node'
>> ld: drivers/power/supply/rt5033_charger.c:710: undefined reference to `devm_extcon_register_notifier_all'
   ld: vmlinux.o: in function `rt5033_charger_extcon_work':
>> drivers/power/supply/rt5033_charger.c:578: undefined reference to `extcon_get_state'


vim +696 drivers/power/supply/rt5033_charger.c

   567	
   568	static void rt5033_charger_extcon_work(struct work_struct *work)
   569	{
   570		struct rt5033_charger *charger =
   571			container_of(work, struct rt5033_charger, extcon_work);
   572		struct extcon_dev *edev = charger->edev;
   573		int connector, state;
   574		int ret;
   575	
   576		for (connector = EXTCON_USB_HOST; connector <= EXTCON_CHG_USB_PD;
   577		     connector++) {
 > 578			state = extcon_get_state(edev, connector);
   579			if (state == 1)
   580				break;
   581		}
   582	
   583		/*
   584		 * Adding a delay between extcon notification and extcon action. This
   585		 * makes extcon action execution more reliable. Without the delay the
   586		 * execution sometimes fails, possibly because the chip is busy or not
   587		 * ready.
   588		 */
   589		msleep(100);
   590	
   591		switch (connector) {
   592		case EXTCON_CHG_USB_SDP:
   593			ret = rt5033_charger_set_mivr(charger);
   594			if (ret) {
   595				dev_err(charger->dev, "failed to set USB mode\n");
   596				break;
   597			}
   598			dev_info(charger->dev, "USB mode. connector type: %d\n",
   599				 connector);
   600			break;
   601		case EXTCON_CHG_USB_DCP:
   602		case EXTCON_CHG_USB_CDP:
   603		case EXTCON_CHG_USB_ACA:
   604		case EXTCON_CHG_USB_FAST:
   605		case EXTCON_CHG_USB_SLOW:
   606		case EXTCON_CHG_WPT:
   607		case EXTCON_CHG_USB_PD:
   608			ret = rt5033_charger_set_charging(charger);
   609			if (ret) {
   610				dev_err(charger->dev, "failed to set charging\n");
   611				break;
   612			}
   613			dev_info(charger->dev, "charging. connector type: %d\n",
   614				 connector);
   615			break;
   616		case EXTCON_USB_HOST:
   617			ret = rt5033_charger_set_otg(charger);
   618			if (ret) {
   619				dev_err(charger->dev, "failed to set OTG\n");
   620				break;
   621			}
   622			dev_info(charger->dev, "OTG enabled\n");
   623			break;
   624		default:
   625			ret = rt5033_charger_set_disconnect(charger);
   626			if (ret) {
   627				dev_err(charger->dev, "failed to set disconnect\n");
   628				break;
   629			}
   630			dev_info(charger->dev, "disconnected\n");
   631			break;
   632		}
   633	
   634		power_supply_changed(charger->psy);
   635	}
   636	
   637	static int rt5033_charger_extcon_notifier(struct notifier_block *nb,
   638						  unsigned long event, void *param)
   639	{
   640		struct rt5033_charger *charger =
   641			container_of(nb, struct rt5033_charger, extcon_nb);
   642	
   643		schedule_work(&charger->extcon_work);
   644	
   645		return NOTIFY_OK;
   646	}
   647	
   648	static const struct power_supply_desc rt5033_charger_desc = {
   649		.name = "rt5033-charger",
   650		.type = POWER_SUPPLY_TYPE_USB,
   651		.properties = rt5033_charger_props,
   652		.num_properties = ARRAY_SIZE(rt5033_charger_props),
   653		.get_property = rt5033_charger_get_property,
   654	};
   655	
   656	static int rt5033_charger_probe(struct platform_device *pdev)
   657	{
   658		struct rt5033_charger *charger;
   659		struct power_supply_config psy_cfg = {};
   660		struct device_node *np_conn, *np_edev;
   661		int ret;
   662	
   663		charger = devm_kzalloc(&pdev->dev, sizeof(*charger), GFP_KERNEL);
   664		if (!charger)
   665			return -ENOMEM;
   666	
   667		platform_set_drvdata(pdev, charger);
   668		charger->dev = &pdev->dev;
   669		charger->regmap = dev_get_regmap(pdev->dev.parent, NULL);
   670		mutex_init(&charger->lock);
   671	
   672		psy_cfg.of_node = pdev->dev.of_node;
   673		psy_cfg.drv_data = charger;
   674	
   675		charger->psy = devm_power_supply_register(&pdev->dev,
   676							  &rt5033_charger_desc,
   677							  &psy_cfg);
   678		if (IS_ERR(charger->psy))
   679			return dev_err_probe(&pdev->dev, PTR_ERR(charger->psy),
   680					     "Failed to register power supply\n");
   681	
   682		charger->chg = rt5033_charger_dt_init(charger);
   683		if (IS_ERR_OR_NULL(charger->chg))
   684			return PTR_ERR(charger->chg);
   685	
   686		ret = rt5033_charger_reg_init(charger);
   687		if (ret)
   688			return ret;
   689	
   690		/*
   691		 * Extcon support is not vital for the charger to work. If no extcon
   692		 * is available, just emit a warning and leave the probe function.
   693		 */
   694		np_conn = of_parse_phandle(pdev->dev.of_node, "richtek,usb-connector", 0);
   695		np_edev = of_get_parent(np_conn);
 > 696		charger->edev = extcon_find_edev_by_node(np_edev);
   697		if (IS_ERR(charger->edev)) {
   698			dev_warn(&pdev->dev, "no extcon device found in device-tree\n");
   699			goto out;
   700		}
   701	
   702		ret = devm_work_autocancel(&pdev->dev, &charger->extcon_work,
   703					   rt5033_charger_extcon_work);
   704		if (ret) {
   705			dev_err(&pdev->dev, "failed to initialize extcon work\n");
   706			return ret;
   707		}
   708	
   709		charger->extcon_nb.notifier_call = rt5033_charger_extcon_notifier;
 > 710		ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev,
   711							&charger->extcon_nb);
   712		if (ret) {
   713			dev_err(&pdev->dev, "failed to register extcon notifier\n");
   714			return ret;
   715		}
   716	out:
   717		return 0;
   718	}
   719	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2023-08-23 23:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-23 23:18 kernel test robot [this message]
2023-08-24  5:39 ` [linux-next:master 10528/12208] drivers/power/supply/rt5033_charger.c:696: undefined reference to `extcon_find_edev_by_node' Jakob Hauser

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=202308240723.O2rW0InU-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=jahau@rocketmail.com \
    --cc=lee@kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.