diff --git a/packages/base/any/onlp/src/onlp/module/inc/onlp/platformi/sfpi.h b/packages/base/any/onlp/src/onlp/module/inc/onlp/platformi/sfpi.h index 3053b896..cc2bfcac 100644 --- a/packages/base/any/onlp/src/onlp/module/inc/onlp/platformi/sfpi.h +++ b/packages/base/any/onlp/src/onlp/module/inc/onlp/platformi/sfpi.h @@ -85,7 +85,7 @@ int onlp_sfpi_dev_readb(int port, uint8_t devaddr, uint8_t addr); int onlp_sfpi_dev_writeb(int port, uint8_t devaddr, uint8_t addr, uint8_t value); /** - * @brief Read a byte from an address on the given SFP port's bus. + * @brief Read a word from an address on the given SFP port's bus. * @param port The port number. * @param devaddr The device address. * @param addr The address. @@ -94,10 +94,23 @@ int onlp_sfpi_dev_writeb(int port, uint8_t devaddr, uint8_t addr, uint8_t value) int onlp_sfpi_dev_readw(int port, uint8_t devaddr, uint8_t addr); /** - * @brief Write a byte to an address on the given SFP port's bus. + * @brief Write a word to an address on the given SFP port's bus. */ int onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value); +/** + * @brief Read from an address on the given SFP port's bus. + * @param port The port number. + * @param devaddr The device address. + * @param addr The address. + * @returns The data if successful, error otherwise. + */ +int onlp_sfpi_dev_read(int port, uint8_t devaddr, uint8_t addr, uint8_t* rdata, int size); + +/** + * @brief Write to an address on the given SFP port's bus. + */ +int onlp_sfpi_dev_write(int port, uint8_t devaddr, uint8_t addr, uint8_t* data, int size); /** * @brief Read the SFP DOM EEPROM. diff --git a/packages/base/any/onlp/src/onlp/module/src/sfp.c b/packages/base/any/onlp/src/onlp/module/src/sfp.c index 33c176ca..cf2c1cd7 100644 --- a/packages/base/any/onlp/src/onlp/module/src/sfp.c +++ b/packages/base/any/onlp/src/onlp/module/src/sfp.c @@ -431,3 +431,19 @@ onlp_sfp_dev_writew_locked__(int port, uint8_t devaddr, uint8_t addr, uint16_t v return onlp_sfpi_dev_writew(port, devaddr, addr, value); } ONLP_LOCKED_API4(onlp_sfp_dev_writew, int, port, uint8_t, devaddr, uint8_t, addr, uint16_t, value); + +int +onlp_sfp_dev_read_locked__(int port, uint8_t devaddr, uint8_t addr, uint8_t* rdata, int size) +{ + ONLP_SFP_PORT_VALIDATE_AND_MAP(port); + return onlp_sfpi_dev_read(port, devaddr, addr, rdata, size); +} +ONLP_LOCKED_API5(onlp_sfp_dev_read, int, port, uint8_t, devaddr, uint8_t, addr, uint8_t*, rdata, int, size); + +int +onlp_sfp_dev_write_locked__(int port, uint8_t devaddr, uint8_t addr, uint8_t* data, int size) +{ + ONLP_SFP_PORT_VALIDATE_AND_MAP(port); + return onlp_sfpi_dev_write(port, devaddr, addr, data, size); +} +ONLP_LOCKED_API5(onlp_sfp_dev_write, int, port, uint8_t, devaddr, uint8_t, addr, uint8_t*, data, int, size); diff --git a/packages/base/any/onlp/src/onlp_platform_defaults/module/src/sfpi.c b/packages/base/any/onlp/src/onlp_platform_defaults/module/src/sfpi.c index 97d569c6..ecb0ee6d 100644 --- a/packages/base/any/onlp/src/onlp_platform_defaults/module/src/sfpi.c +++ b/packages/base/any/onlp/src/onlp_platform_defaults/module/src/sfpi.c @@ -44,3 +44,5 @@ __ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_readb(int port, uint8_t devaddr, ui __ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_writeb(int port, uint8_t devaddr, uint8_t addr, uint8_t value)); __ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_readw(int port, uint8_t devaddr, uint8_t addr)); __ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value)); +__ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_read(int port, uint8_t devaddr, uint8_t addr, uint8_t *rdata, int size)); +__ONLP_DEFAULTI_IMPLEMENTATION(onlp_sfpi_dev_write(int port, uint8_t devaddr, uint8_t addr, uint8_t* data, int size));