[OpenBIOS] [PATCH 2/6] pc_serial.c: move address initialisation to a separate init word
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Sun Jul 27 22:44:43 CEST 2014
This is in preparation for making the address attribute optional.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
openbios-devel/drivers/pc_serial.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/openbios-devel/drivers/pc_serial.c b/openbios-devel/drivers/pc_serial.c
index f63fcaa..47e7084 100644
--- a/openbios-devel/drivers/pc_serial.c
+++ b/openbios-devel/drivers/pc_serial.c
@@ -142,22 +142,19 @@ pc_serial_close(void)
static void
pc_serial_open(unsigned long *address)
{
- int len;
- phandle_t ph;
- unsigned long *prop;
-
- fword("my-self");
- fword("ihandle>phandle");
- ph = (phandle_t)POP();
- prop = (unsigned long *)get_property(ph, "address", &len);
- *address = *prop;
-
RET ( -1 );
}
+static void
+pc_serial_init(unsigned long *address)
+{
+ *address = POP();
+}
+
DECLARE_UNNAMED_NODE(pc_serial, INSTALL_OPEN, sizeof(unsigned long));
NODE_METHODS(pc_serial) = {
+ { "init", pc_serial_init },
{ "open", pc_serial_open },
{ "close", pc_serial_close },
{ "read", pc_serial_read },
@@ -177,6 +174,10 @@ ob_pc_serial_init(const char *path, const char *dev_name, uint64_t base,
push_str(nodebuff);
fword("find-device");
+ PUSH(offset);
+ PUSH(find_package_method("init", get_cur_dev()));
+ fword("execute");
+
push_str("serial");
fword("device-type");
--
1.7.10.4
More information about the OpenBIOS
mailing list