Tim Chu has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
drivers/ipmi/ocp: Add function to support OCP specific ipmi command
Add driver for OCP specific ipmi commands. With this driver, OCP specific ipmi command can be used after implementing function here.
TEST=Build with CB:42242 on Delta Lake, select Kconfig option: IPMI_OCP and add device in devicetree to open this function.
Signed-off-by: Tim Chu Tim.Chu@quantatw.com Change-Id: I2efa85978ec4ad3d75f2bd93b4139ef8059127ed --- A src/drivers/ipmi/ocp/Kconfig A src/drivers/ipmi/ocp/Makefile.inc A src/drivers/ipmi/ocp/ipmi_ocp.c A src/drivers/ipmi/ocp/ipmi_ocp.h 4 files changed, 80 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/96/43996/1
diff --git a/src/drivers/ipmi/ocp/Kconfig b/src/drivers/ipmi/ocp/Kconfig new file mode 100644 index 0000000..810f6a0 --- /dev/null +++ b/src/drivers/ipmi/ocp/Kconfig @@ -0,0 +1,5 @@ +config IPMI_OCP + bool + default n + help + This implements OCP specific IPMI command \ No newline at end of file diff --git a/src/drivers/ipmi/ocp/Makefile.inc b/src/drivers/ipmi/ocp/Makefile.inc new file mode 100644 index 0000000..8291f82 --- /dev/null +++ b/src/drivers/ipmi/ocp/Makefile.inc @@ -0,0 +1 @@ +ramstage-$(CONFIG_IPMI_OCP) += ipmi_ocp.c diff --git a/src/drivers/ipmi/ocp/ipmi_ocp.c b/src/drivers/ipmi/ocp/ipmi_ocp.c new file mode 100644 index 0000000..a2cca36 --- /dev/null +++ b/src/drivers/ipmi/ocp/ipmi_ocp.c @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Place in devicetree.cb: + * + * chip drivers/ipmi/ocp # OCP specific IPMI porting + device pnp ca2.1 on end + * end + */ + +#include <console/console.h> +#include <device/device.h> +#include <device/pnp.h> +#include "chip.h" +#include "drivers/ipmi/ipmi_kcs.h" +#include "ipmi_ocp.h" + +static void ipmi_ocp_init(struct device *dev) +{ + /* Add OCP specific IPMI command */ +} + +static void ipmi_ocp_final(struct device *dev) +{ + /* Add OCP specific IPMI command */ +} + +static void ipmi_set_resources(struct device *dev) +{ + struct resource *res; + + for (res = dev->resource_list; res; res = res->next) { + if (!(res->flags & IORESOURCE_ASSIGNED)) + continue; + + res->flags |= IORESOURCE_STORED; + report_resource_stored(dev, res, ""); + } +} + +static void ipmi_read_resources(struct device *dev) +{ + struct resource *res = new_resource(dev, 0); + res->base = dev->path.pnp.port; + res->size = 2; + res->flags = IORESOURCE_IO | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; +} + +static struct device_operations ops = { + .read_resources = ipmi_read_resources, + .set_resources = ipmi_set_resources, + .init = ipmi_ocp_init, + .final = ipmi_ocp_final, +}; + +static void enable_dev(struct device *dev) +{ + if (dev->path.type != DEVICE_PATH_PNP) + printk(BIOS_ERR, "%s: Unsupported device type\n", + dev_path(dev)); + else if (dev->path.pnp.port & 1) + printk(BIOS_ERR, "%s: Base address needs to be aligned to 2\n", + dev_path(dev)); + else + dev->ops = &ops; +} + +struct chip_operations drivers_ipmi_ocp_ops = { + CHIP_NAME("IPMI OCP") + .enable_dev = enable_dev, +}; diff --git a/src/drivers/ipmi/ocp/ipmi_ocp.h b/src/drivers/ipmi/ocp/ipmi_ocp.h new file mode 100644 index 0000000..f6870d6 --- /dev/null +++ b/src/drivers/ipmi/ocp/ipmi_ocp.h @@ -0,0 +1,4 @@ +#ifndef __IPMI_OCP_H +#define __IPMI_OCP_H + +#endif
Tim Chu has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
Patch Set 3:
This change is ready for review.
Hello build bot (Jenkins), Patrick Georgi, Martin Roth, Jonathan Zhang, Ryback Hung, Philipp Deppenwiese, Rocky Phagura, Bryant Ou, Patrick Rudolph,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/43996
to look at the new patch set (#4).
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
drivers/ipmi/ocp: Add function to support OCP specific ipmi command
Add driver for OCP specific ipmi commands. With this driver, OCP specific ipmi command can be used after implementing functions here.
TEST=Build with CB:42242 on Delta Lake, select Kconfig option: IPMI_OCP and add device in devicetree to open this function.
Use ipmi-util in OpenBMC to dump raw data and check if this function work.
Signed-off-by: Tim Chu Tim.Chu@quantatw.com Change-Id: I2efa85978ec4ad3d75f2bd93b4139ef8059127ed --- A src/drivers/ipmi/ocp/Kconfig A src/drivers/ipmi/ocp/Makefile.inc A src/drivers/ipmi/ocp/ipmi_ocp.c A src/drivers/ipmi/ocp/ipmi_ocp.h 4 files changed, 82 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/96/43996/4
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
Patch Set 4: Code-Review+1
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
Patch Set 4: Code-Review+2
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
Patch Set 4:
(1 comment)
https://review.coreboot.org/c/coreboot/+/43996/4/src/drivers/ipmi/ocp/Kconfi... File src/drivers/ipmi/ocp/Kconfig:
https://review.coreboot.org/c/coreboot/+/43996/4/src/drivers/ipmi/ocp/Kconfi... PS4, Line 1: IPMI_OCP Something would need to select this so that this code gets build-tested
Hello build bot (Jenkins), Patrick Georgi, Martin Roth, Jonathan Zhang, Ryback Hung, Philipp Deppenwiese, Angel Pons, Rocky Phagura, Bryant Ou, Patrick Rudolph,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/43996
to look at the new patch set (#5).
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
drivers/ipmi/ocp: Add function to support OCP specific ipmi command
Add driver for OCP specific ipmi commands. With this driver, OCP specific ipmi command can be used after implementing functions here.
TEST=Build with CB:42242 on Delta Lake, select Kconfig option: IPMI_OCP and add device in devicetree to open this function.
Use ipmi-util in OpenBMC to dump raw data and check if this function work.
Signed-off-by: Tim Chu Tim.Chu@quantatw.com Change-Id: I2efa85978ec4ad3d75f2bd93b4139ef8059127ed --- A src/drivers/ipmi/ocp/Kconfig A src/drivers/ipmi/ocp/Makefile.inc A src/drivers/ipmi/ocp/ipmi_ocp.c A src/drivers/ipmi/ocp/ipmi_ocp.h M src/mainboard/ocp/deltalake/Kconfig M src/mainboard/ocp/deltalake/devicetree.cb 6 files changed, 86 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/96/43996/5
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
Patch Set 5: Code-Review+2
(1 comment)
https://review.coreboot.org/c/coreboot/+/43996/4/src/drivers/ipmi/ocp/Kconfi... File src/drivers/ipmi/ocp/Kconfig:
https://review.coreboot.org/c/coreboot/+/43996/4/src/drivers/ipmi/ocp/Kconfi... PS4, Line 1: IPMI_OCP
Something would need to select this so that this code gets build-tested
Done
Angel Pons has submitted this change. ( https://review.coreboot.org/c/coreboot/+/43996 )
Change subject: drivers/ipmi/ocp: Add function to support OCP specific ipmi command ......................................................................
drivers/ipmi/ocp: Add function to support OCP specific ipmi command
Add driver for OCP specific ipmi commands. With this driver, OCP specific ipmi command can be used after implementing functions here.
TEST=Build with CB:42242 on Delta Lake, select Kconfig option: IPMI_OCP and add device in devicetree to open this function.
Use ipmi-util in OpenBMC to dump raw data and check if this function work.
Signed-off-by: Tim Chu Tim.Chu@quantatw.com Change-Id: I2efa85978ec4ad3d75f2bd93b4139ef8059127ed Reviewed-on: https://review.coreboot.org/c/coreboot/+/43996 Reviewed-by: Angel Pons th3fanbus@gmail.com Tested-by: build bot (Jenkins) no-reply@coreboot.org --- A src/drivers/ipmi/ocp/Kconfig A src/drivers/ipmi/ocp/Makefile.inc A src/drivers/ipmi/ocp/ipmi_ocp.c A src/drivers/ipmi/ocp/ipmi_ocp.h M src/mainboard/ocp/deltalake/Kconfig M src/mainboard/ocp/deltalake/devicetree.cb 6 files changed, 86 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Angel Pons: Looks good to me, approved
diff --git a/src/drivers/ipmi/ocp/Kconfig b/src/drivers/ipmi/ocp/Kconfig new file mode 100644 index 0000000..7899e69 --- /dev/null +++ b/src/drivers/ipmi/ocp/Kconfig @@ -0,0 +1,5 @@ +config IPMI_OCP + bool + default n + help + This implements OCP specific IPMI command diff --git a/src/drivers/ipmi/ocp/Makefile.inc b/src/drivers/ipmi/ocp/Makefile.inc new file mode 100644 index 0000000..8291f82 --- /dev/null +++ b/src/drivers/ipmi/ocp/Makefile.inc @@ -0,0 +1 @@ +ramstage-$(CONFIG_IPMI_OCP) += ipmi_ocp.c diff --git a/src/drivers/ipmi/ocp/ipmi_ocp.c b/src/drivers/ipmi/ocp/ipmi_ocp.c new file mode 100644 index 0000000..1866708 --- /dev/null +++ b/src/drivers/ipmi/ocp/ipmi_ocp.c @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Place in devicetree.cb: + * + * chip drivers/ipmi/ocp # OCP specific IPMI porting + device pnp ca2.1 on end + * end + */ + +#include <console/console.h> +#include <device/device.h> +#include <device/pnp.h> +#include "chip.h" +#include "drivers/ipmi/ipmi_kcs.h" +#include "ipmi_ocp.h" + +static void ipmi_ocp_init(struct device *dev) +{ + /* Add OCP specific IPMI command */ +} + +static void ipmi_ocp_final(struct device *dev) +{ + /* Add OCP specific IPMI command */ +} + +static void ipmi_set_resources(struct device *dev) +{ + struct resource *res; + + for (res = dev->resource_list; res; res = res->next) { + if (!(res->flags & IORESOURCE_ASSIGNED)) + continue; + + res->flags |= IORESOURCE_STORED; + report_resource_stored(dev, res, ""); + } +} + +static void ipmi_read_resources(struct device *dev) +{ + struct resource *res = new_resource(dev, 0); + res->base = dev->path.pnp.port; + res->size = 2; + res->flags = IORESOURCE_IO | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; +} + +static struct device_operations ops = { + .read_resources = ipmi_read_resources, + .set_resources = ipmi_set_resources, + .init = ipmi_ocp_init, + .final = ipmi_ocp_final, +}; + +static void enable_dev(struct device *dev) +{ + if (dev->path.type != DEVICE_PATH_PNP) + printk(BIOS_ERR, "%s: Unsupported device type\n", + dev_path(dev)); + else if (dev->path.pnp.port & 1) + printk(BIOS_ERR, "%s: Base address needs to be aligned to 2\n", + dev_path(dev)); + else + dev->ops = &ops; +} + +struct chip_operations drivers_ipmi_ocp_ops = { + CHIP_NAME("IPMI OCP") + .enable_dev = enable_dev, +}; diff --git a/src/drivers/ipmi/ocp/ipmi_ocp.h b/src/drivers/ipmi/ocp/ipmi_ocp.h new file mode 100644 index 0000000..9aebbe9 --- /dev/null +++ b/src/drivers/ipmi/ocp/ipmi_ocp.h @@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef __IPMI_OCP_H +#define __IPMI_OCP_H + +#endif diff --git a/src/mainboard/ocp/deltalake/Kconfig b/src/mainboard/ocp/deltalake/Kconfig index 17f81bd..d5df902 100644 --- a/src/mainboard/ocp/deltalake/Kconfig +++ b/src/mainboard/ocp/deltalake/Kconfig @@ -13,6 +13,7 @@ select OCP_DMI select VPD select VPD_SMBIOS_VERSION + select IPMI_OCP
config POWER_STATE_DEFAULT_ON_AFTER_FAILURE default n diff --git a/src/mainboard/ocp/deltalake/devicetree.cb b/src/mainboard/ocp/deltalake/devicetree.cb index cc17e06..f77a214 100644 --- a/src/mainboard/ocp/deltalake/devicetree.cb +++ b/src/mainboard/ocp/deltalake/devicetree.cb @@ -85,6 +85,9 @@ register "bmc_i2c_address" = "0x20" register "bmc_boot_timeout" = "60" end + chip drivers/ipmi/ocp # OCP specific IPMI porting + device pnp ca2.1 on end + end end # ISA bridge: Intel Device a245 device pci 1f.1 on end # p2sb device pci 1f.2 on end # Memory controller: Intel Device a221