aboutsummaryrefslogtreecommitdiff
path: root/src/modules/systemlib/otp.h
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-01-07 21:41:07 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-01-07 21:41:07 +0100
commit0ef85c133b387f5d5aab26e00985922c9f05c7e0 (patch)
tree201642077e20fe2914b33621ff933200bcd593f6 /src/modules/systemlib/otp.h
parent4ef7817d965ec77c04acd4e4173bb6051e7d6836 (diff)
downloadpx4-firmware-0ef85c133b387f5d5aab26e00985922c9f05c7e0.tar.gz
px4-firmware-0ef85c133b387f5d5aab26e00985922c9f05c7e0.tar.bz2
px4-firmware-0ef85c133b387f5d5aab26e00985922c9f05c7e0.zip
OTP return value cleanup
Diffstat (limited to 'src/modules/systemlib/otp.h')
-rw-r--r--src/modules/systemlib/otp.h107
1 files changed, 51 insertions, 56 deletions
diff --git a/src/modules/systemlib/otp.h b/src/modules/systemlib/otp.h
index e80ca9afb..f10e129d8 100644
--- a/src/modules/systemlib/otp.h
+++ b/src/modules/systemlib/otp.h
@@ -1,9 +1,6 @@
/****************************************************************************
*
- * Copyright (C) 2012-2013 PX4 Development Team. All rights reserved.
- * Authors:
- * Lorenz Meier <lm@inf.ethz.ch>
- * David "Buzz" Bussenschutt <davidbuzz@gmail.com>
+ * Copyright (c) 2012-2014 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -36,7 +33,7 @@
/**
* @file otp.h
- * One TIme Programmable ( OTP ) Flash routine/s.
+ * One TIme Programmable ( OTP ) Flash routine/s.
*
* @author Lorenz Meier <lm@inf.ethz.ch>
* @author David "Buzz" Bussenschutt <davidbuzz@gmail.com>
@@ -46,8 +43,8 @@
#ifndef OTP_H_
#define OTP_H_
- __BEGIN_DECLS
-
+__BEGIN_DECLS
+
#define ADDR_OTP_START 0x1FFF7800
#define ADDR_OTP_LOCK_START 0x1FFF7A00
@@ -58,22 +55,21 @@
#include <unistd.h>
#include <stdio.h>
-
-// possible flash statuses
+
+// possible flash statuses
#define F_BUSY 1
#define F_ERROR_WRP 2
#define F_ERROR_PROGRAM 3
#define F_ERROR_OPERATION 4
#define F_COMPLETE 5
-typedef struct
-{
- volatile uint32_t accesscontrol; // 0x00
- volatile uint32_t key; // 0x04
- volatile uint32_t optionkey; // 0x08
- volatile uint32_t status; // 0x0C
- volatile uint32_t control; // 0x10
- volatile uint32_t optioncontrol; //0x14
+typedef struct {
+ volatile uint32_t accesscontrol; // 0x00
+ volatile uint32_t key; // 0x04
+ volatile uint32_t optionkey; // 0x08
+ volatile uint32_t status; // 0x0C
+ volatile uint32_t control; // 0x10
+ volatile uint32_t optioncontrol; //0x14
} flash_registers;
#define PERIPH_BASE ((uint32_t)0x40000000) //Peripheral base address
@@ -96,7 +92,7 @@ typedef struct
- #pragma pack(push, 1)
+#pragma pack(push, 1)
/*
* The OTP area is divided into 16 OTP data blocks of 32 bytes and one lock OTP block of 16 bytes.
@@ -106,51 +102,50 @@ typedef struct
* contain 0x00 and 0xFF values, otherwise the OTP bytes might not be taken into account correctly.
*/
- struct otp {
- // first 32 bytes = the '0' Block
- char id[4]; ///4 bytes < 'P' 'X' '4' '\n'
- uint8_t id_type; ///1 byte < 0 for USB VID, 1 for generic VID
- uint32_t vid; ///4 bytes
- uint32_t pid; ///4 bytes
- char unused[19]; ///19 bytes
- // Cert-of-Auth is next 4 blocks ie 1-4 ( where zero is first block )
- char signature[128];
- // insert extras here
- uint32_t lock_bytes[4];
- };
-
- struct otp_lock {
- uint8_t lock_bytes[16];
- };
+struct otp {
+ // first 32 bytes = the '0' Block
+ char id[4]; ///4 bytes < 'P' 'X' '4' '\n'
+ uint8_t id_type; ///1 byte < 0 for USB VID, 1 for generic VID
+ uint32_t vid; ///4 bytes
+ uint32_t pid; ///4 bytes
+ char unused[19]; ///19 bytes
+ // Cert-of-Auth is next 4 blocks ie 1-4 ( where zero is first block )
+ char signature[128];
+ // insert extras here
+ uint32_t lock_bytes[4];
+};
+
+struct otp_lock {
+ uint8_t lock_bytes[16];
+};
#pragma pack(pop)
-#define UDID_START 0x1FFF7A10
#define ADDR_F_SIZE 0x1FFF7A22
#pragma pack(push, 1)
- union udid {
- uint32_t serial[3];
- char data[12];
- };
+union udid {
+ uint32_t serial[3];
+ char data[12];
+};
#pragma pack(pop)
-
- /**
- * s
- */
- //__EXPORT float calc_indicated_airspeed(float differential_pressure);
-
- __EXPORT void F_unlock(void);
- __EXPORT void F_lock(void);
- __EXPORT int val_read(void* dest, volatile const void* src, int bytes);
- __EXPORT int val_write(volatile void* dest, const void* src, int bytes);
- __EXPORT int write_otp(uint8_t id_type, uint32_t vid, uint32_t pid, char* signature);
- __EXPORT int lock_otp(void);
-
-
- __EXPORT uint8_t F_write_byte(uint32_t Address, uint8_t Data);
- __EXPORT uint8_t F_write_word(uint32_t Address, uint32_t Data);
-
+
+/**
+ * s
+ */
+//__EXPORT float calc_indicated_airspeed(float differential_pressure);
+
+__EXPORT void F_unlock(void);
+__EXPORT void F_lock(void);
+__EXPORT int val_read(void *dest, volatile const void *src, int bytes);
+__EXPORT int val_write(volatile void *dest, const void *src, int bytes);
+__EXPORT int write_otp(uint8_t id_type, uint32_t vid, uint32_t pid, char *signature);
+__EXPORT int lock_otp(void);
+
+
+__EXPORT int F_write_byte(uint32_t Address, uint8_t Data);
+__EXPORT int F_write_word(uint32_t Address, uint32_t Data);
+
__END_DECLS
#endif