openMMC
Open Source Modular MMC for AMCs
Loading...
Searching...
No Matches
board_ipmb.c File Reference
#include "ipmb.h"
#include "port.h"
Include dependency graph for board_ipmb.c:

Functions

uint8_t get_ipmb_addr (void)
 Reads own I2C slave address using GA pins.
 

Variables

const unsigned char IPMBL_TABLE [IPMBL_TABLE_SIZE]
 Table holding all possible address values in IPMB specification.
 

Function Documentation

◆ get_ipmb_addr()

uint8_t get_ipmb_addr ( void )

Reads own I2C slave address using GA pins.

Based on coreipm/coreipm/mmc.c

Author
Gokhan Sozmen

The state of each GA signal is represented by G (grounded), U (unconnected), or P (pulled up to Management Power).

The MMC drives P1 low and reads the GA lines. The MMC then drives P1 high and reads the GA lines. Any line that changes state between the two reads indicate an unconnected (U) pin.

The IPMB-L address of a Module can be calculated as (70h + Site Number x 2).
G = 0, P = 1, U = 2

Pin Ternary Decimal Address
GGG 000 0 0x70
GGP 001 1 0x8A
GGU 002 2 0x72
GPG 010 3 0x8E
GPP 011 4 0x92
GPU 012 5 0x90
GUG 020 6 0x74
GUP 021 7 0x8C
GUU 022 8 0x76
PGG 100 9 0x98
PGP 101 10 0x9C
PGU 102 11 0x9A
PPG 110 12 0xA0
PPP 111 13 0xA4
PPU 112 14 0x88
PUG 120 15 0x9E
PUP 121 16 0x86
PUU 122 17 0x84
UGG 200 18 0x78
UGP 201 19 0x94
UGU 202 20 0x7A
UPG 210 21 0x96
UPP 211 22 0x82
UPU 212 23 0x80
UUG 220 24 0x7C
UUP 221 25 0x7E
UUU 222 26 0xA2
Returns
7-bit Slave Address

Variable Documentation

◆ IPMBL_TABLE

const unsigned char IPMBL_TABLE[IPMBL_TABLE_SIZE]
Initial value:
= {
0x70, 0x8A, 0x72, 0x8E, 0x92, 0x90, 0x74, 0x8C, 0x76,
0x98, 0x9C, 0x9A, 0xA0, 0xA4, 0x88, 0x9E, 0x86, 0x84,
0x78, 0x94, 0x7A, 0x96, 0x82, 0x80, 0x7C, 0x7E, 0xA2 }

Table holding all possible address values in IPMB specification.

See also
get_ipmb_addr()