diff options
author | Mark Meserve <mark.meserve@ni.com> | 2019-04-11 15:14:37 -0500 |
---|---|---|
committer | michael-west <michael.west@ettus.com> | 2019-05-21 16:08:43 -0700 |
commit | 4f57ecab13e37f132c99ec797d412def3f1e2a66 (patch) | |
tree | 4789bce38abf657f52a4ebd1dabce720e1e62f68 /firmware/fx3/b200/b200_i2c.c | |
parent | 914206e04182d2446de14be29ef886ae7c013641 (diff) | |
download | uhd-4f57ecab13e37f132c99ec797d412def3f1e2a66.tar.gz uhd-4f57ecab13e37f132c99ec797d412def3f1e2a66.tar.bz2 uhd-4f57ecab13e37f132c99ec797d412def3f1e2a66.zip |
b200: add custom bootloader
- Adds custom bootloader code
- Refactor common functions in firmware and bootloader
Diffstat (limited to 'firmware/fx3/b200/b200_i2c.c')
-rw-r--r-- | firmware/fx3/b200/b200_i2c.c | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/firmware/fx3/b200/b200_i2c.c b/firmware/fx3/b200/b200_i2c.c deleted file mode 100644 index c6fa67c77..000000000 --- a/firmware/fx3/b200/b200_i2c.c +++ /dev/null @@ -1,82 +0,0 @@ -// -// Copyright 2013-2014 Ettus Research LLC -// - -#include "b200_i2c.h" - -#include "cyu3i2c.h" - -/* I2c initialization for EEPROM programming. */ -void CyFxI2cInit (uint16_t pageLen) { - CyU3PI2cConfig_t i2cConfig; - - /* Initialize and configure the I2C master module. */ - CyU3PI2cInit (); - - /* Start the I2C master block. The bit rate is set at 100KHz. - * The data transfer is done via DMA. */ - CyU3PMemSet ((uint8_t *)&i2cConfig, 0, sizeof(i2cConfig)); - i2cConfig.bitRate = CY_FX_USBI2C_I2C_BITRATE; - i2cConfig.busTimeout = 0xFFFFFFFF; - i2cConfig.dmaTimeout = 0xFFFF; - i2cConfig.isDma = CyFalse; - - CyU3PI2cSetConfig (&i2cConfig, NULL); - glI2cPageSize = pageLen; -} - -/* I2C read / write for programmer application. */ -void CyFxUsbI2cTransfer ( - uint16_t byteAddress, - uint8_t devAddr, - uint16_t byteCount, - uint8_t *buffer, - CyBool_t isRead) -{ - CyU3PI2cPreamble_t preamble; - uint16_t pageCount = (byteCount / glI2cPageSize); - uint16_t resCount = glI2cPageSize; - - if (byteCount == 0) { - return; - } - - if ((byteCount % glI2cPageSize) != 0) { - pageCount ++; - resCount = byteCount % glI2cPageSize; - } - - while (pageCount != 0) { - if (isRead) { - /* Update the preamble information. */ - preamble.length = 4; - preamble.buffer[0] = devAddr; - preamble.buffer[1] = (uint8_t)(byteAddress >> 8); - preamble.buffer[2] = (uint8_t)(byteAddress & 0xFF); - preamble.buffer[3] = (devAddr | 0x01); - preamble.ctrlMask = 0x0004; - - CyU3PI2cReceiveBytes (&preamble, buffer, (pageCount == 1) ? resCount : glI2cPageSize, 0); - } else { - /* Write. Update the preamble information. */ - preamble.length = 3; - preamble.buffer[0] = devAddr; - preamble.buffer[1] = (uint8_t)(byteAddress >> 8); - preamble.buffer[2] = (uint8_t)(byteAddress & 0xFF); - preamble.ctrlMask = 0x0000; - - CyU3PI2cTransmitBytes (&preamble, buffer, (pageCount == 1) ? resCount : glI2cPageSize, 0); - /* Wait for the write to complete. */ - preamble.length = 1; - CyU3PI2cWaitForAck(&preamble, 200); - } - - /* An additional delay seems to be required after receiving an ACK. */ - CyU3PThreadSleep (1); - - /* Update the parameters */ - byteAddress += glI2cPageSize; - buffer += glI2cPageSize; - pageCount --; - } -} |