All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/16] ipmi: Allow raw access to KCS devices
@ 2021-06-08 10:47 ` Andrew Jeffery
  0 siblings, 0 replies; 93+ messages in thread
From: Andrew Jeffery @ 2021-06-08 10:47 UTC (permalink / raw)
  To: linux-aspeed


Hello,

This is the 4th spin of the series refactoring the keyboard-controller-style
device drivers in the IPMI subsystem.

v3 can be found at:

https://lore.kernel.org/lkml/20210510054213.1610760-1-andrew at aj.id.au/

v4:

* Makes kcs_bmc_add_device() return an error if no client successfully
  initialised with respect to the binding of the device driver
* Retains the existing single-open semantics (v3 allowed multiple-open)
* Fixes the OBE macro for the NPCM7xx KCS driver
* Cleans up Yoda-style masks (mask constant on the LHS rather than RHS)
* Cleans up includes in kcs_bmc_client.h
* Adds some comments to the SerIO adapter to clarify object lifetimes

Previously:

Changes in v3:

* The series was rebased onto v5.13-rc1
* v5.13-rc1 includes Chiawei's patches reworking the LPC devicetree bindings,
  so they're no-longer required in the series.
* After some discussion with Arnd[1] and investigating the serio subsystem,
  I've replaced the "raw" KCS driver (patch 16/21 in v2) with a serio adaptor
  (patch 11/16 in this series). The adaptor allows us to take advantage of the
  existing chardevs provided by serio.

[1] https://lore.kernel.org/linux-arm-kernel/37e75b07-a5c6-422f-84b3-54f2bea0b917 at www.fastmail.com/

Changes in v2 include:

* A rebase onto v5.12-rc2
* Incorporation of off-list feedback on SerIRQ configuration from
  Chiawei
* Further validation on hardware for ASPEED KCS devices 2, 3 and 4
* Lifting the existing single-open constraint of the IPMI chardev
* Fixes addressing Rob's feedback on the conversion of the ASPEED KCS
  binding to dt-schema
* Fixes addressing Rob's feedback on the new aspeed,lpc-interrupts
  property definition for the ASPEED KCS binding

Please test and review!

Andrew

Andrew Jeffery (16):
  ipmi: kcs_bmc_aspeed: Use of match data to extract KCS properties
  ipmi: kcs_bmc: Make status update atomic
  ipmi: kcs_bmc: Rename {read,write}_{status,data}() functions
  ipmi: kcs_bmc: Split out kcs_bmc_cdev_ipmi
  ipmi: kcs_bmc: Turn the driver data-structures inside-out
  ipmi: kcs_bmc: Split headers into device and client
  ipmi: kcs_bmc: Strip private client data from struct kcs_bmc
  ipmi: kcs_bmc: Decouple the IPMI chardev from the core
  ipmi: kcs_bmc: Allow clients to control KCS IRQ state
  ipmi: kcs_bmc: Enable IBF on open
  ipmi: kcs_bmc: Add serio adaptor
  dt-bindings: ipmi: Convert ASPEED KCS binding to schema
  dt-bindings: ipmi: Add optional SerIRQ property to ASPEED KCS devices
  ipmi: kcs_bmc_aspeed: Implement KCS SerIRQ configuration
  ipmi: kcs_bmc_aspeed: Fix IBFIE typo from datasheet
  ipmi: kcs_bmc_aspeed: Optionally apply status address

 .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 106 +++
 .../bindings/ipmi/aspeed-kcs-bmc.txt          |  33 -
 drivers/char/ipmi/Kconfig                     |  27 +
 drivers/char/ipmi/Makefile                    |   2 +
 drivers/char/ipmi/kcs_bmc.c                   | 523 ++++-----------
 drivers/char/ipmi/kcs_bmc.h                   |  92 +--
 drivers/char/ipmi/kcs_bmc_aspeed.c            | 633 +++++++++++++-----
 drivers/char/ipmi/kcs_bmc_cdev_ipmi.c         | 568 ++++++++++++++++
 drivers/char/ipmi/kcs_bmc_client.h            |  45 ++
 drivers/char/ipmi/kcs_bmc_device.h            |  22 +
 drivers/char/ipmi/kcs_bmc_npcm7xx.c           |  92 ++-
 drivers/char/ipmi/kcs_bmc_serio.c             | 157 +++++
 12 files changed, 1594 insertions(+), 706 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
 delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt
 create mode 100644 drivers/char/ipmi/kcs_bmc_cdev_ipmi.c
 create mode 100644 drivers/char/ipmi/kcs_bmc_client.h
 create mode 100644 drivers/char/ipmi/kcs_bmc_device.h
 create mode 100644 drivers/char/ipmi/kcs_bmc_serio.c

-- 
2.30.2


^ permalink raw reply	[flat|nested] 93+ messages in thread
* Re: [PATCH v4 01/16] ipmi: kcs_bmc_aspeed: Use of match data to extract KCS properties
@ 2021-06-08 16:55 kernel test robot
  0 siblings, 0 replies; 93+ messages in thread
From: kernel test robot @ 2021-06-08 16:55 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210608104757.582199-2-andrew@aj.id.au>
References: <20210608104757.582199-2-andrew@aj.id.au>
TO: Andrew Jeffery <andrew@aj.id.au>
TO: openipmi-developer(a)lists.sourceforge.net
TO: openbmc(a)lists.ozlabs.org
TO: minyard(a)acm.org
CC: devicetree(a)vger.kernel.org
CC: tmaimon77(a)gmail.com
CC: linux-aspeed(a)lists.ozlabs.org
CC: avifishman70(a)gmail.com
CC: venture(a)google.com
CC: linux-kernel(a)vger.kernel.org
CC: tali.perry1(a)gmail.com

Hi Andrew,

I love your patch! Perhaps something to improve:

[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on robh/for-next linux/master linus/master v5.13-rc5 next-20210608]
[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/Andrew-Jeffery/ipmi-Allow-raw-access-to-KCS-devices/20210608-185151
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 603e4922f1c81fc2ed3a87b4f91a8d3aafc7e093
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
compiler: sh4-linux-gcc (GCC) 9.3.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/char/ipmi/kcs_bmc_aspeed.c:345:46: warning: Either the condition 'channel<0' is redundant, otherwise there is negative array index -1. [negativeIndex]
    kcs_bmc->ioreg = ast_kcs_bmc_ioregs[channel - 1];
                                                ^
   drivers/char/ipmi/kcs_bmc_aspeed.c:338:14: note: Assuming that condition 'channel<0' is not redundant
    if (channel < 0)
                ^
   drivers/char/ipmi/kcs_bmc_aspeed.c:345:46: note: Negative array index
    kcs_bmc->ioreg = ast_kcs_bmc_ioregs[channel - 1];
                                                ^

vim +345 drivers/char/ipmi/kcs_bmc_aspeed.c

09f5f680707e47 Andrew Jeffery 2019-12-16  316  
09f5f680707e47 Andrew Jeffery 2019-12-16  317  static int aspeed_kcs_probe(struct platform_device *pdev)
09f5f680707e47 Andrew Jeffery 2019-12-16  318  {
15f2c02f7bddbc Andrew Jeffery 2021-06-08  319  	const struct aspeed_kcs_of_ops *ops;
09f5f680707e47 Andrew Jeffery 2019-12-16  320  	struct device *dev = &pdev->dev;
15f2c02f7bddbc Andrew Jeffery 2021-06-08  321  	struct aspeed_kcs_bmc *priv;
09f5f680707e47 Andrew Jeffery 2019-12-16  322  	struct kcs_bmc *kcs_bmc;
09f5f680707e47 Andrew Jeffery 2019-12-16  323  	struct device_node *np;
15f2c02f7bddbc Andrew Jeffery 2021-06-08  324  	int rc, channel, addr;
09f5f680707e47 Andrew Jeffery 2019-12-16  325  
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  326  	np = dev->of_node->parent;
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  327  	if (!of_device_is_compatible(np, "aspeed,ast2400-lpc-v2") &&
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  328  	    !of_device_is_compatible(np, "aspeed,ast2500-lpc-v2") &&
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  329  	    !of_device_is_compatible(np, "aspeed,ast2600-lpc-v2")) {
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  330  		dev_err(dev, "unsupported LPC device binding\n");
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  331  		return -ENODEV;
8f88156f82ea4c Chia-Wei, Wang 2021-03-19  332  	}
15f2c02f7bddbc Andrew Jeffery 2021-06-08  333  	ops = of_device_get_match_data(&pdev->dev);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  334  	if (!ops)
09f5f680707e47 Andrew Jeffery 2019-12-16  335  		return -EINVAL;
09f5f680707e47 Andrew Jeffery 2019-12-16  336  
15f2c02f7bddbc Andrew Jeffery 2021-06-08  337  	channel = ops->get_channel(pdev);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  338  	if (channel < 0)
15f2c02f7bddbc Andrew Jeffery 2021-06-08  339  		return channel;
15f2c02f7bddbc Andrew Jeffery 2021-06-08  340  
15f2c02f7bddbc Andrew Jeffery 2021-06-08  341  	kcs_bmc = kcs_bmc_alloc(&pdev->dev, sizeof(struct aspeed_kcs_bmc), channel);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  342  	if (!kcs_bmc)
15f2c02f7bddbc Andrew Jeffery 2021-06-08  343  		return -ENOMEM;
09f5f680707e47 Andrew Jeffery 2019-12-16  344  
15f2c02f7bddbc Andrew Jeffery 2021-06-08 @345  	kcs_bmc->ioreg = ast_kcs_bmc_ioregs[channel - 1];
be2ed207e37453 Haiyue Wang    2018-02-02  346  	kcs_bmc->io_inputb = aspeed_kcs_inb;
be2ed207e37453 Haiyue Wang    2018-02-02  347  	kcs_bmc->io_outputb = aspeed_kcs_outb;
be2ed207e37453 Haiyue Wang    2018-02-02  348  
15f2c02f7bddbc Andrew Jeffery 2021-06-08  349  	addr = ops->get_io_address(pdev);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  350  	if (addr < 0)
15f2c02f7bddbc Andrew Jeffery 2021-06-08  351  		return addr;
15f2c02f7bddbc Andrew Jeffery 2021-06-08  352  
15f2c02f7bddbc Andrew Jeffery 2021-06-08  353  	priv = kcs_bmc_priv(kcs_bmc);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  354  	priv->map = syscon_node_to_regmap(pdev->dev.parent->of_node);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  355  	if (IS_ERR(priv->map)) {
15f2c02f7bddbc Andrew Jeffery 2021-06-08  356  		dev_err(&pdev->dev, "Couldn't get regmap\n");
15f2c02f7bddbc Andrew Jeffery 2021-06-08  357  		return -ENODEV;
15f2c02f7bddbc Andrew Jeffery 2021-06-08  358  	}
15f2c02f7bddbc Andrew Jeffery 2021-06-08  359  
15f2c02f7bddbc Andrew Jeffery 2021-06-08  360  	aspeed_kcs_set_address(kcs_bmc, addr);
15f2c02f7bddbc Andrew Jeffery 2021-06-08  361  
af6432c76a13ef Andrew Jeffery 2019-12-16  362  	rc = aspeed_kcs_config_irq(kcs_bmc, pdev);
af6432c76a13ef Andrew Jeffery 2019-12-16  363  	if (rc)
af6432c76a13ef Andrew Jeffery 2019-12-16  364  		return rc;
af6432c76a13ef Andrew Jeffery 2019-12-16  365  
be2ed207e37453 Haiyue Wang    2018-02-02  366  	dev_set_drvdata(dev, kcs_bmc);
be2ed207e37453 Haiyue Wang    2018-02-02  367  
be2ed207e37453 Haiyue Wang    2018-02-02  368  	aspeed_kcs_enable_channel(kcs_bmc, true);
be2ed207e37453 Haiyue Wang    2018-02-02  369  
be2ed207e37453 Haiyue Wang    2018-02-02  370  	rc = misc_register(&kcs_bmc->miscdev);
be2ed207e37453 Haiyue Wang    2018-02-02  371  	if (rc) {
be2ed207e37453 Haiyue Wang    2018-02-02  372  		dev_err(dev, "Unable to register device\n");
be2ed207e37453 Haiyue Wang    2018-02-02  373  		return rc;
be2ed207e37453 Haiyue Wang    2018-02-02  374  	}
be2ed207e37453 Haiyue Wang    2018-02-02  375  
09f5f680707e47 Andrew Jeffery 2019-12-16  376  	dev_dbg(&pdev->dev,
09f5f680707e47 Andrew Jeffery 2019-12-16  377  		"Probed KCS device %d (IDR=0x%x, ODR=0x%x, STR=0x%x)\n",
09f5f680707e47 Andrew Jeffery 2019-12-16  378  		kcs_bmc->channel, kcs_bmc->ioreg.idr, kcs_bmc->ioreg.odr,
09f5f680707e47 Andrew Jeffery 2019-12-16  379  		kcs_bmc->ioreg.str);
be2ed207e37453 Haiyue Wang    2018-02-02  380  
be2ed207e37453 Haiyue Wang    2018-02-02  381  	return 0;
be2ed207e37453 Haiyue Wang    2018-02-02  382  }
be2ed207e37453 Haiyue Wang    2018-02-02  383  

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

^ permalink raw reply	[flat|nested] 93+ messages in thread

end of thread, other threads:[~2021-06-19  1:21 UTC | newest]

Thread overview: 93+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-08 10:47 [PATCH v4 00/16] ipmi: Allow raw access to KCS devices Andrew Jeffery
2021-06-08 10:47 ` Andrew Jeffery
2021-06-08 10:47 ` Andrew Jeffery
2021-06-08 10:47 ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 01/16] ipmi: kcs_bmc_aspeed: Use of match data to extract KCS properties Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-18 23:19   ` Zev Weiss
2021-06-18 23:19     ` Zev Weiss
2021-06-18 23:19     ` Zev Weiss
2021-06-18 23:19     ` Zev Weiss
2021-06-08 10:47 ` [PATCH v4 02/16] ipmi: kcs_bmc: Make status update atomic Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 03/16] ipmi: kcs_bmc: Rename {read, write}_{status, data}() functions Andrew Jeffery
2021-06-08 10:47   ` [PATCH v4 03/16] ipmi: kcs_bmc: Rename {read,write}_{status,data}() functions Andrew Jeffery
2021-06-08 10:47   ` [PATCH v4 03/16] ipmi: kcs_bmc: Rename {read, write}_{status, data}() functions Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 04/16] ipmi: kcs_bmc: Split out kcs_bmc_cdev_ipmi Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 05/16] ipmi: kcs_bmc: Turn the driver data-structures inside-out Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 06/16] ipmi: kcs_bmc: Split headers into device and client Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-18 23:24   ` Zev Weiss
2021-06-18 23:24     ` Zev Weiss
2021-06-18 23:24     ` Zev Weiss
2021-06-18 23:24     ` Zev Weiss
2021-06-08 10:47 ` [PATCH v4 07/16] ipmi: kcs_bmc: Strip private client data from struct kcs_bmc Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 08/16] ipmi: kcs_bmc: Decouple the IPMI chardev from the core Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-18 23:26   ` Zev Weiss
2021-06-18 23:26     ` Zev Weiss
2021-06-18 23:26     ` Zev Weiss
2021-06-18 23:26     ` Zev Weiss
2021-06-08 10:47 ` [PATCH v4 09/16] ipmi: kcs_bmc: Allow clients to control KCS IRQ state Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 10/16] ipmi: kcs_bmc: Enable IBF on open Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 11/16] ipmi: kcs_bmc: Add serio adaptor Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-18 23:30   ` Zev Weiss
2021-06-18 23:30     ` Zev Weiss
2021-06-18 23:30     ` Zev Weiss
2021-06-18 23:30     ` Zev Weiss
2021-06-08 10:47 ` [PATCH v4 12/16] dt-bindings: ipmi: Convert ASPEED KCS binding to schema Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 13/16] dt-bindings: ipmi: Add optional SerIRQ property to ASPEED KCS devices Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 14/16] ipmi: kcs_bmc_aspeed: Implement KCS SerIRQ configuration Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 15/16] ipmi: kcs_bmc_aspeed: Fix IBFIE typo from datasheet Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47 ` [PATCH v4 16/16] ipmi: kcs_bmc_aspeed: Optionally apply status address Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-08 10:47   ` Andrew Jeffery
2021-06-15 18:46 ` [PATCH v4 00/16] ipmi: Allow raw access to KCS devices Corey Minyard
2021-06-15 18:46   ` Corey Minyard
2021-06-15 18:46   ` Corey Minyard
2021-06-15 18:46   ` Corey Minyard
2021-06-15 22:43   ` Andrew Jeffery
2021-06-15 22:43     ` Andrew Jeffery
2021-06-15 22:43     ` Andrew Jeffery
2021-06-15 22:43     ` Andrew Jeffery
  -- strict thread matches above, loose matches on Subject: below --
2021-06-08 16:55 [PATCH v4 01/16] ipmi: kcs_bmc_aspeed: Use of match data to extract KCS properties kernel test robot

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.