David Barksdale wrote:
> From: David Barksdale <[EMAIL PROTECTED]>
>
> This change allows the various IPMI serial codec drivers to report their
> IPMB slave address to the serial core driver in order for the interface
> to be initialized with the correct address instead of the default 0x20.
>
> Signed-off-by: David Barksdale <[EMAIL PROTECTED]>
> ---
> This patch was generated against the MontaVista CGE 5.0.0 kernel which
> appears to be 2.6.21 with the OpenIPMI project patches applied.
>
>
Sorry I didn't get back to you sooner on this, I'm in the process of
traveling. I'd actually like this to come back in the init_complete
call, to make it consistent with the way passing the IPMB address works
in the next interface up. The capabilities interface is not really a
good logical match and I'd prefer to avoid the side effect.
I've attached a patch that does what I suggested.
Thanks,
-corey
From: Corey Minyard <[EMAIL PROTECTED]>
Allow the serial codecs to pass up the IPMI slave address of the
BMC if they know about it.
Signed-off-by: Corey Minyard <[EMAIL PROTECTED]>
---
Index: linux-2.6.24/drivers/char/ipmi/ipmi_serial.c
===================================================================
--- linux-2.6.24.orig/drivers/char/ipmi/ipmi_serial.c
+++ linux-2.6.24/drivers/char/ipmi/ipmi_serial.c
@@ -1443,12 +1443,17 @@ static int try_get_dev_id(struct ipmi_se
return rv;
}
-void ipmi_serial_ll_init_complete(struct ipmi_serial_info *info, int err)
+void ipmi_serial_ll_init_complete(struct ipmi_serial_info *info,
+ unsigned char slave_addr,
+ int err)
{
if (err)
info->init_status = err;
- else
+ else {
+ if (slave_addr)
+ info->slave_addr = slave_addr;
info->init_status = 1;
+ }
}
EXPORT_SYMBOL(ipmi_serial_ll_init_complete);
Index: linux-2.6.24/drivers/char/ipmi/ipmi_serial_direct.c
===================================================================
--- linux-2.6.24.orig/drivers/char/ipmi/ipmi_serial_direct.c
+++ linux-2.6.24/drivers/char/ipmi/ipmi_serial_direct.c
@@ -387,7 +387,7 @@ static int sd_init(struct ipmi_serial_co
* Nothing to do. The upper layer will do a message to test
* the interface.
*/
- ipmi_serial_ll_init_complete(data->info, 0);
+ ipmi_serial_ll_init_complete(data->info, 0, 0);
return 0;
}
Index: linux-2.6.24/drivers/char/ipmi/ipmi_serial_radisys_ascii.c
===================================================================
--- linux-2.6.24.orig/drivers/char/ipmi/ipmi_serial_radisys_ascii.c
+++ linux-2.6.24/drivers/char/ipmi/ipmi_serial_radisys_ascii.c
@@ -363,7 +363,7 @@ static void handle_init_getipmbaddr(stru
spin_unlock_irqrestore(&data->lock, flags);
} else {
spin_unlock_irqrestore(&data->lock, flags);
- ipmi_serial_ll_init_complete(data->info, -EINVAL);
+ ipmi_serial_ll_init_complete(data->info, 0, -EINVAL);
}
return;
}
@@ -372,7 +372,7 @@ static void handle_init_getipmbaddr(stru
data->recv_msg_handler = NULL;
data->handshake_done = 1;
spin_unlock_irqrestore(&data->lock, flags);
- ipmi_serial_ll_init_complete(data->info, 0);
+ ipmi_serial_ll_init_complete(data->info, data->bmc_i2c_addr, 0);
}
static int ra_init(struct ipmi_serial_codec_data *data,
@@ -556,7 +556,7 @@ static void ra_timer_tick(struct ipmi_se
if (data->handshake_retries_left <= 0) {
data->handshake_done = 1;
spin_unlock_irqrestore(&data->lock, flags);
- ipmi_serial_ll_init_complete(data->info, -ETIMEDOUT);
+ ipmi_serial_ll_init_complete(data->info, 0, -ETIMEDOUT);
goto out;
}
Index: linux-2.6.24/drivers/char/ipmi/ipmi_serial_terminal_mode.c
===================================================================
--- linux-2.6.24.orig/drivers/char/ipmi/ipmi_serial_terminal_mode.c
+++ linux-2.6.24/drivers/char/ipmi/ipmi_serial_terminal_mode.c
@@ -422,7 +422,7 @@ static void try_to_send_data(struct ipmi
static void finish_init(struct ipmi_serial_codec_data *data, int err)
{
- ipmi_serial_ll_init_complete(data->info, err);
+ ipmi_serial_ll_init_complete(data->info, 0, err);
}
/*
Index: linux-2.6.24/include/linux/ipmi_serial_sm.h
===================================================================
--- linux-2.6.24.orig/include/linux/ipmi_serial_sm.h
+++ linux-2.6.24/include/linux/ipmi_serial_sm.h
@@ -193,9 +193,11 @@ struct ipmi_serial_codec {
};
/*
- * Called by the lower layer when initialization is complete.
+ * Called by the lower layer when initialization is complete. Pass
+ * in zero as the slave_addr if you are unable to compute it.
*/
extern void ipmi_serial_ll_init_complete(struct ipmi_serial_info *info,
+ unsigned char slave_addr,
int err);
/*
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer