aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/fx3/b200/b200_i2c.c
diff options
context:
space:
mode:
authorMark Meserve <mark.meserve@ni.com>2019-04-11 15:14:37 -0500
committermichael-west <michael.west@ettus.com>2019-05-21 16:08:43 -0700
commit4f57ecab13e37f132c99ec797d412def3f1e2a66 (patch)
tree4789bce38abf657f52a4ebd1dabce720e1e62f68 /firmware/fx3/b200/b200_i2c.c
parent914206e04182d2446de14be29ef886ae7c013641 (diff)
downloaduhd-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.c82
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 --;
- }
-}