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

Reply via email to