Message ID | 20250218024702.2139216-1-superm1@kernel.org |
---|---|
State | New |
Headers | show |
Series | pinctrl: amd: Add an LPS0 check() callback | expand |
Hi Mario, kernel test robot noticed the following build errors: [auto build test ERROR on linusw-pinctrl/devel] [also build test ERROR on linusw-pinctrl/for-next linus/master v6.14-rc3 next-20250219] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Mario-Limonciello/pinctrl-amd-Add-an-LPS0-check-callback/20250218-104906 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel patch link: https://lore.kernel.org/r/20250218024702.2139216-1-superm1%40kernel.org patch subject: [PATCH] pinctrl: amd: Add an LPS0 check() callback config: x86_64-buildonly-randconfig-003-20250219 (https://download.01.org/0day-ci/archive/20250219/202502191627.fRgoBwcZ-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250219/202502191627.fRgoBwcZ-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/202502191627.fRgoBwcZ-lkp@intel.com/ All error/warnings (new ones prefixed by >>): drivers/pinctrl/pinctrl-amd.c: In function 'amd_gpio_probe': >> drivers/pinctrl/pinctrl-amd.c:1211:15: error: implicit declaration of function 'acpi_register_lps0_dev'; did you mean 'acpi_register_gsi'? [-Werror=implicit-function-declaration] 1211 | ret = acpi_register_lps0_dev(&pinctrl_amd_s2idle_dev_ops); | ^~~~~~~~~~~~~~~~~~~~~~ | acpi_register_gsi >> drivers/pinctrl/pinctrl-amd.c:1211:39: error: 'pinctrl_amd_s2idle_dev_ops' undeclared (first use in this function) 1211 | ret = acpi_register_lps0_dev(&pinctrl_amd_s2idle_dev_ops); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-amd.c:1211:39: note: each undeclared identifier is reported only once for each function it appears in drivers/pinctrl/pinctrl-amd.c: In function 'amd_gpio_remove': >> drivers/pinctrl/pinctrl-amd.c:1232:9: error: implicit declaration of function 'acpi_unregister_lps0_dev'; did you mean 'acpi_unregister_gsi'? [-Werror=implicit-function-declaration] 1232 | acpi_unregister_lps0_dev(&pinctrl_amd_s2idle_dev_ops); | ^~~~~~~~~~~~~~~~~~~~~~~~ | acpi_unregister_gsi drivers/pinctrl/pinctrl-amd.c:1232:35: error: 'pinctrl_amd_s2idle_dev_ops' undeclared (first use in this function) 1232 | acpi_unregister_lps0_dev(&pinctrl_amd_s2idle_dev_ops); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-amd.c: At top level: >> drivers/pinctrl/pinctrl-amd.c:40:25: warning: 'pinctrl_dev' defined but not used [-Wunused-variable] 40 | static struct amd_gpio *pinctrl_dev; | ^~~~~~~~~~~ cc1: some warnings being treated as errors vim +1211 drivers/pinctrl/pinctrl-amd.c 1151 1152 gpio_dev->pdev = pdev; 1153 gpio_dev->gc.get_direction = amd_gpio_get_direction; 1154 gpio_dev->gc.direction_input = amd_gpio_direction_input; 1155 gpio_dev->gc.direction_output = amd_gpio_direction_output; 1156 gpio_dev->gc.get = amd_gpio_get_value; 1157 gpio_dev->gc.set = amd_gpio_set_value; 1158 gpio_dev->gc.set_config = amd_gpio_set_config; 1159 gpio_dev->gc.dbg_show = amd_gpio_dbg_show; 1160 1161 gpio_dev->gc.base = -1; 1162 gpio_dev->gc.label = pdev->name; 1163 gpio_dev->gc.owner = THIS_MODULE; 1164 gpio_dev->gc.parent = &pdev->dev; 1165 gpio_dev->gc.ngpio = resource_size(res) / 4; 1166 1167 gpio_dev->hwbank_num = gpio_dev->gc.ngpio / 64; 1168 gpio_dev->groups = kerncz_groups; 1169 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups); 1170 1171 amd_pinctrl_desc.name = dev_name(&pdev->dev); 1172 amd_get_iomux_res(gpio_dev); 1173 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc, 1174 gpio_dev); 1175 if (IS_ERR(gpio_dev->pctrl)) { 1176 dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); 1177 return PTR_ERR(gpio_dev->pctrl); 1178 } 1179 1180 /* Disable and mask interrupts */ 1181 amd_gpio_irq_init(gpio_dev); 1182 1183 girq = &gpio_dev->gc.irq; 1184 gpio_irq_chip_set_chip(girq, &amd_gpio_irqchip); 1185 /* This will let us handle the parent IRQ in the driver */ 1186 girq->parent_handler = NULL; 1187 girq->num_parents = 0; 1188 girq->parents = NULL; 1189 girq->default_type = IRQ_TYPE_NONE; 1190 girq->handler = handle_simple_irq; 1191 1192 ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev); 1193 if (ret) 1194 return ret; 1195 1196 ret = gpiochip_add_pin_range(&gpio_dev->gc, dev_name(&pdev->dev), 1197 0, 0, gpio_dev->gc.ngpio); 1198 if (ret) { 1199 dev_err(&pdev->dev, "Failed to add pin range\n"); 1200 goto out2; 1201 } 1202 1203 ret = devm_request_irq(&pdev->dev, gpio_dev->irq, amd_gpio_irq_handler, 1204 IRQF_SHARED | IRQF_COND_ONESHOT, KBUILD_MODNAME, gpio_dev); 1205 if (ret) 1206 goto out2; 1207 1208 platform_set_drvdata(pdev, gpio_dev); 1209 acpi_register_wakeup_handler(gpio_dev->irq, amd_gpio_check_wake, gpio_dev); 1210 > 1211 ret = acpi_register_lps0_dev(&pinctrl_amd_s2idle_dev_ops); 1212 if (ret) 1213 return ret; 1214 1215 dev_dbg(&pdev->dev, "amd gpio driver loaded\n"); 1216 return ret; 1217 1218 out2: 1219 gpiochip_remove(&gpio_dev->gc); 1220 1221 return ret; 1222 } 1223 1224 static void amd_gpio_remove(struct platform_device *pdev) 1225 { 1226 struct amd_gpio *gpio_dev; 1227 1228 gpio_dev = platform_get_drvdata(pdev); 1229 1230 gpiochip_remove(&gpio_dev->gc); 1231 acpi_unregister_wakeup_handler(amd_gpio_check_wake, gpio_dev); > 1232 acpi_unregister_lps0_dev(&pinctrl_amd_s2idle_dev_ops); 1233 } 1234
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c index 1d7fdcdec4c85..5b4376b05eafb 100644 --- a/drivers/pinctrl/pinctrl-amd.c +++ b/drivers/pinctrl/pinctrl-amd.c @@ -37,6 +37,8 @@ #include "pinctrl-utils.h" #include "pinctrl-amd.h" +static struct amd_gpio *pinctrl_dev; + static int amd_gpio_get_direction(struct gpio_chip *gc, unsigned offset) { unsigned long flags; @@ -909,6 +911,29 @@ static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin) return false; } +static void amd_gpio_check_pending(void) +{ + struct amd_gpio *gpio_dev = pinctrl_dev; + struct pinctrl_desc *desc = gpio_dev->pctrl->desc; + int i; + + if (!pm_debug_messages_on) + return; + + for (i = 0; i < desc->npins; i++) { + int pin = desc->pins[i].number; + u32 tmp; + + tmp = readl(gpio_dev->base + pin * 4); + if (tmp & PIN_IRQ_PENDING) + pm_pr_dbg("%s: GPIO %d is active: 0x%x.\n", __func__, pin, tmp); + } +} + +static struct acpi_s2idle_dev_ops pinctrl_amd_s2idle_dev_ops = { + .check = amd_gpio_check_pending, +}; + static int amd_gpio_suspend_hibernate_common(struct device *dev, bool is_suspend) { struct amd_gpio *gpio_dev = dev_get_drvdata(dev); @@ -942,6 +967,7 @@ static int amd_gpio_suspend_hibernate_common(struct device *dev, bool is_suspend static int amd_gpio_suspend(struct device *dev) { + pinctrl_dev = dev_get_drvdata(dev); return amd_gpio_suspend_hibernate_common(dev, true); } @@ -1182,6 +1208,10 @@ static int amd_gpio_probe(struct platform_device *pdev) platform_set_drvdata(pdev, gpio_dev); acpi_register_wakeup_handler(gpio_dev->irq, amd_gpio_check_wake, gpio_dev); + ret = acpi_register_lps0_dev(&pinctrl_amd_s2idle_dev_ops); + if (ret) + return ret; + dev_dbg(&pdev->dev, "amd gpio driver loaded\n"); return ret; @@ -1199,6 +1229,7 @@ static void amd_gpio_remove(struct platform_device *pdev) gpiochip_remove(&gpio_dev->gc); acpi_unregister_wakeup_handler(amd_gpio_check_wake, gpio_dev); + acpi_unregister_lps0_dev(&pinctrl_amd_s2idle_dev_ops); } #ifdef CONFIG_ACPI