[platform] Add as7512 sfp/eeprom utils (#531)

* Cavm platfrom modules insmod on start

Signed-off-by: Nadiya.Stetskovych <Nadiya.Stetskovych@cavium.com>

* Add as77512 platform utils

Signed-off-by: Nadiya.Stetskovych <Nadiya.Stetskovych@cavium.com>

* Move platform related init to platform modules

Signed-off-by: Nadiya.Stetskovych <Nadiya.Stetskovych@cavium.com>
This commit is contained in:
Nadiya 2017-05-18 10:59:54 +03:00 committed by lguohan
parent 71e3ee8bf2
commit a7fbd775c6
4 changed files with 76 additions and 0 deletions

View File

@ -0,0 +1,33 @@
#!/usr/bin/env python
#############################################################################
# Cavium
#
# Platform and model specific eeprom subclass, inherits from the base class,
# and provides the followings:
# - the eeprom format definition
# - specific encoder/decoder if there is special need
#############################################################################
try:
import exceptions
import binascii
import time
import optparse
import warnings
import os
import sys
from sonic_eeprom import eeprom_base
from sonic_eeprom import eeprom_tlvinfo
import subprocess
except ImportError, e:
raise ImportError (str(e) + "- required module not found")
class board(eeprom_tlvinfo.TlvInfoDecoder):
_TLV_INFO_MAX_LEN = 256
def __init__(self, name, path, cpld_root, ro):
self.eeprom_path = "/sys/bus/i2c/devices/1-0057/eeprom"
super(board, self).__init__(self.eeprom_path, 0, '', True)

View File

@ -0,0 +1,25 @@
#! /usr/bin/python
try:
from sonic_sfp.sfputilbase import sfputilbase
except ImportError, e:
raise ImportError (str(e) + "- required module not found")
class sfputil(sfputilbase):
"""Platform specific sfputil class"""
port_start = 0
port_end = 31
ports_in_block = 32
port_to_eeprom_mapping = {}
_qsfp_ports = range(0, ports_in_block + 1)
def __init__(self, port_num):
# Override port_to_eeprom_mapping for class initialization
eeprom_path = '/sys/bus/i2c/devices/{0}-0050/sfp_eeprom'
for x in range(self.port_start, self.port_end + 1):
self.port_to_eeprom_mapping[x] = eeprom_path.format(x + 18)
sfputilbase.__init__(self, port_num)

View File

@ -5,6 +5,7 @@ SHELL = /bin/bash
MAIN_TARGET = cavm_platform_modules.deb
DEB_BUILD_DIR = cavm-platform-modules-deb
SCRIPT_SRC = $(DEB_BUILD_DIR)/
SYSTEMD_DIR = /etc/systemd/system
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
# get sources
@ -18,9 +19,13 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
popd
mkdir -p $(DEB_BUILD_DIR)/lib/modules/$(KVERSION)
mkdir -p $(DEB_BUILD_DIR)/usr/bin
mkdir -p $(DEB_BUILD_DIR)$(SYSTEMD_DIR)/multi-user.target.wants/
cp SONiC/AS7512-32X/module/*.ko $(DEB_BUILD_DIR)/lib/modules/$(KVERSION)
cp SONiC/AS7512-32X/accton_as7512_util.py $(DEB_BUILD_DIR)/usr/bin
chmod +x $(DEB_BUILD_DIR)/usr/bin/accton_as7512_util.py
cp as7512-platform-init.service $(DEB_BUILD_DIR)$(SYSTEMD_DIR)
ln -s $(SYSTEMD_DIR)/as7512-platform-init.service $(DEB_BUILD_DIR)$(SYSTEMD_DIR)/multi-user.target.wants/as7512-platform-init.service
cp -r DEBIAN $(DEB_BUILD_DIR)
dpkg-deb -b $(DEB_BUILD_DIR) $(MAIN_TARGET)

View File

@ -0,0 +1,13 @@
[Unit]
Description=Accton AS7512-32X Platform initialization service
Before=pmon.service
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/usr/bin/accton_as7512_util.py install
ExecStop=/usr/bin/accton_as7512_util.py clean
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target