Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f68b5e2 authored by Vasant Hegde's avatar Vasant Hegde Committed by Benjamin Herrenschmidt
Browse files

powerpc/powernv: Create opal sysfs directory



Create /sys/firmware/opal directory. We wil use this
interface to fetch opal error logs, firmware update, etc.

Signed-off-by: default avatarVasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent ef1313de
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -601,6 +601,9 @@ typedef struct oppanel_line {
	uint64_t 	line_len;
} oppanel_line_t;

/* /sys/firmware/opal */
extern struct kobject *opal_kobj;

/* API functions */
int64_t opal_console_write(int64_t term_number, __be64 *length,
			   const uint8_t *buffer);
+19 −0
Original line number Diff line number Diff line
@@ -17,11 +17,15 @@
#include <linux/interrupt.h>
#include <linux/notifier.h>
#include <linux/slab.h>
#include <linux/kobject.h>
#include <asm/opal.h>
#include <asm/firmware.h>

#include "powernv.h"

/* /sys/firmware/opal */
struct kobject *opal_kobj;

struct opal {
	u64 base;
	u64 entry;
@@ -375,6 +379,17 @@ static irqreturn_t opal_interrupt(int irq, void *data)
	return IRQ_HANDLED;
}

static int opal_sysfs_init(void)
{
	opal_kobj = kobject_create_and_add("opal", firmware_kobj);
	if (!opal_kobj) {
		pr_warn("kobject_create_and_add opal failed\n");
		return -ENOMEM;
	}

	return 0;
}

static int __init opal_init(void)
{
	struct device_node *np, *consoles;
@@ -420,6 +435,10 @@ static int __init opal_init(void)
				   " (0x%x)\n", rc, irq, hwirq);
		opal_irqs[i] = irq;
	}

	/* Create "opal" kobject under /sys/firmware */
	rc = opal_sysfs_init();

	return 0;
}
subsys_initcall(opal_init);