Fix platform support for R0 vs R0B.

This commit is contained in:
Jeffrey Townsend
2016-09-13 18:24:22 +00:00
parent 74a4ca31d4
commit 57d1930f6b
6 changed files with 104 additions and 16 deletions

View File

@@ -36,6 +36,14 @@ definitions:
defs: *cdefs
basename: powerpc_accton_as5710_54x_config
enum:
platform_id:
members:
- POWERPC_ACCTON_AS5710_54X_R0B:
strname : "powerpc-accton-as5710-54x-r0b"
- POWERPC_ACCTON_AS5710_54X_R0:
strname : "powerpc-accton-as5710-54x-r0"
portingmacro:
POWERPC_ACCTON_AS5710_54X:
macros:

View File

@@ -27,6 +27,7 @@
#define __PLATFORM_LIB_H__
#include "powerpc_accton_as5710_54x_log.h"
#include "powerpc_accton_as5710_54x_int.h"
#define PSU1_ID 1
#define PSU2_ID 2
@@ -66,12 +67,6 @@ typedef enum psu_type {
psu_type_t get_psu_type(int id, char* modelname, int modelname_len);
typedef enum platform_id_e {
PLATFORM_ID_UNKNOWN,
PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0,
PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX,
} platform_id_t;
extern platform_id_t platform_id;
#endif /* __PLATFORM_LIB_H__ */

View File

@@ -4,7 +4,61 @@
*
*****************************************************************************/
#include <powerpc_accton_as5710_54x/powerpc_accton_as5710_54x_config.h>
#include "powerpc_accton_as5710_54x_int.h"
/* <auto.start.enum(ALL).source> */
aim_map_si_t platform_id_map[] =
{
{ "powerpc-accton-as5710-54x-r0b", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B },
{ "powerpc-accton-as5710-54x-r0", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0 },
{ NULL, 0 }
};
aim_map_si_t platform_id_desc_map[] =
{
{ "None", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B },
{ "None", PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0 },
{ NULL, 0 }
};
const char*
platform_id_name(platform_id_t e)
{
const char* name;
if(aim_map_si_i(&name, e, platform_id_map, 0)) {
return name;
}
else {
return "-invalid value for enum type 'platform_id'";
}
}
int
platform_id_value(const char* str, platform_id_t* e, int substr)
{
int i;
AIM_REFERENCE(substr);
if(aim_map_si_s(&i, str, platform_id_map, 0)) {
/* Enum Found */
*e = i;
return 0;
}
else {
return -1;
}
}
const char*
platform_id_desc(platform_id_t e)
{
const char* name;
if(aim_map_si_i(&name, e, platform_id_desc_map, 0)) {
return name;
}
else {
return "-invalid value for enum type 'platform_id'";
}
}
/* <--auto.start.enum(ALL).source> */
/* <auto.end.enum(ALL).source> */

View File

@@ -8,5 +8,39 @@
#include <powerpc_accton_as5710_54x/powerpc_accton_as5710_54x_config.h>
/* <auto.start.enum(ALL).header> */
/** platform_id */
typedef enum platform_id_e {
PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B,
PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0,
PLATFORM_ID_LAST = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0,
PLATFORM_ID_COUNT,
PLATFORM_ID_INVALID = -1,
} platform_id_t;
/** Strings macro. */
#define PLATFORM_ID_STRINGS \
{\
"powerpc-accton-as5710-54x-r0b", \
"powerpc-accton-as5710-54x-r0", \
}
/** Enum names. */
const char* platform_id_name(platform_id_t e);
/** Enum values. */
int platform_id_value(const char* str, platform_id_t* e, int substr);
/** Enum descriptions. */
const char* platform_id_desc(platform_id_t e);
/** validator */
#define PLATFORM_ID_VALID(_e) \
( (0 <= (_e)) && ((_e) <= PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0))
/** platform_id_map table. */
extern aim_map_si_t platform_id_map[];
/** platform_id_desc_map table. */
extern aim_map_si_t platform_id_desc_map[];
/* <auto.end.enum(ALL).header> */
#endif /* __POWERPC_ACCTON_AS5710_54X_INT_H__ */

View File

@@ -109,7 +109,7 @@ onlp_sfpi_port_map(int port, int* rport)
* SFP port numbers here are 0-based.
*/
if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0) {
if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0B) {
switch(port)
{
case 48:
@@ -146,7 +146,7 @@ onlp_sfpi_port_map(int port, int* rport)
static void
port_qsfp_cpld_map__(int port, int* rport)
{
if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX) {
if(platform_id == PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0) {
switch(port)
{
case 53:

View File

@@ -34,12 +34,13 @@
#include <fcntl.h>
#include <onlplib/mmap.h>
#include "platform_lib.h"
#include "powerpc_accton_as5710_54x_int.h"
#define HW_INFO_PATH "/dev/mtd1"
#define HW_INFO_LENGTH 2*65536
uint8_t hw_info[HW_INFO_LENGTH]={0};
platform_id_t platform_id = PLATFORM_ID_UNKNOWN;
platform_id_t platform_id = PLATFORM_ID_INVALID;
const char*
onlp_sysi_platform_get(void)
@@ -50,12 +51,8 @@ onlp_sysi_platform_get(void)
int
onlp_sysi_platform_set(const char* platform)
{
if(strstr(platform, "powerpc-accton-as5710-54x-r")) {
platform_id = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_RX;
return ONLP_STATUS_OK;
}
if(strstr(platform, "powerpc-as5710-54x-r0b")) {
platform_id = PLATFORM_ID_POWERPC_ACCTON_AS5710_54X_R0;
if(platform_id_value(platform, &platform_id, 0) == 0) {
/* Platform supported */
return ONLP_STATUS_OK;
}
AIM_LOG_ERROR("No support for platform '%s'", platform);