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: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Vasant Hegde 2013-08-27 15:09:52 +05:30 committed by Benjamin Herrenschmidt
parent ef1313deaf
commit 6f68b5e2c6
2 changed files with 22 additions and 0 deletions

View file

@ -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);

View file

@ -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);