Fixed incorrect Dataflash functionality in the USBKEY board if the driver is modified for a single Dataflash chip (thanks to Jonathan Oakley).

pull/1469/head
Dean Camera 12 years ago
parent 7fd2349e1a
commit f3049d958e

@ -66,13 +66,13 @@
#define DATAFLASH_TOTALCHIPS 1 // TODO: Replace with the number of Dataflashes on the board, max 2 #define DATAFLASH_TOTALCHIPS 1 // TODO: Replace with the number of Dataflashes on the board, max 2
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 // TODO: Replace with mask to hold /CS of first Dataflash low, and all others high #define DATAFLASH_CHIP1 // TODO: Replace with mask with the pin attached to the first Dataflash /CS set
/** Mask for the second dataflash chip selected. */ /** Mask for the second dataflash chip selected. */
#define DATAFLASH_CHIP2 // TODO: Replace with mask to hold /CS of second Dataflash low, and all others high #define DATAFLASH_CHIP2 // TODO: Replace with mask with the pin attached to the second Dataflash /CS set
/** Internal main memory page size for the board's dataflash ICs. */ /** Internal main memory page size for the board's dataflash ICs. */
#define DATAFLASH_PAGE_SIZE // TODO: Replace with the page size for the Dataflash ICs #define DATAFLASH_PAGE_SIZE // TODO: Replace with the page size for the Dataflash ICs
@ -134,7 +134,7 @@
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
* *
* \param[in] ChipMask Mask of the Dataflash IC to select, in the form of DATAFLASH_CHIPn mask (where n is * \param[in] ChipMask Mask of the Dataflash IC to select, in the form of a \c DATAFLASH_CHIPn mask (where n is
* the chip number). * the chip number).
*/ */
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;

@ -66,13 +66,13 @@
#define DATAFLASH_TOTALCHIPS 1 // TODO: Replace with the number of Dataflashes on the board, max 2 #define DATAFLASH_TOTALCHIPS 1 // TODO: Replace with the number of Dataflashes on the board, max 2
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 // TODO: Replace with mask to hold /CS of first Dataflash low, and all others high #define DATAFLASH_CHIP1 // TODO: Replace with mask with the pin attached to the first Dataflash /CS set
/** Mask for the second dataflash chip selected. */ /** Mask for the second dataflash chip selected. */
#define DATAFLASH_CHIP2 // TODO: Replace with mask to hold /CS of second Dataflash low, and all others high #define DATAFLASH_CHIP2 // TODO: Replace with mask with the pin attached to the second Dataflash /CS set
/** Internal main memory page size for the board's dataflash ICs. */ /** Internal main memory page size for the board's dataflash ICs. */
#define DATAFLASH_PAGE_SIZE // TODO: Replace with the page size for the Dataflash ICs #define DATAFLASH_PAGE_SIZE // TODO: Replace with the page size for the Dataflash ICs
@ -130,7 +130,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -141,7 +141,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -31,6 +31,7 @@
* - Fixed logic hole breaking USB operations on a USB controller with only one supported USB mode and no USB_DEVICE_ONLY or USB_HOST_ONLY * - Fixed logic hole breaking USB operations on a USB controller with only one supported USB mode and no USB_DEVICE_ONLY or USB_HOST_ONLY
* configuration token set * configuration token set
* - Fixed possible rounding in the VERSION_BCD() macros for some 0.01 step increments (thanks to Oliver Zander) * - Fixed possible rounding in the VERSION_BCD() macros for some 0.01 step increments (thanks to Oliver Zander)
* - Fixed incorrect Dataflash functionality in the USBKEY board if the driver is modified for a single Dataflash chip (thanks to Jonathan Oakley)
* - Library Applications: * - Library Applications:
* - Fixed broken RESET_TOGGLES_LIBUSB_COMPAT compile time option in the AVRISP-MKII project * - Fixed broken RESET_TOGGLES_LIBUSB_COMPAT compile time option in the AVRISP-MKII project
* - Fixed incompatibility in the CDC class bootloader on some systems (thanks to Sylvain Munaut) * - Fixed incompatibility in the CDC class bootloader on some systems (thanks to Sylvain Munaut)

@ -66,7 +66,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 6) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_DDR DDRE #define DATAFLASH_CHIPCS_DDR DDRE
#define DATAFLASH_CHIPCS_PORT PORTE #define DATAFLASH_CHIPCS_PORT PORTE
#endif #endif
@ -77,10 +77,10 @@
#define DATAFLASH_TOTALCHIPS 1 #define DATAFLASH_TOTALCHIPS 1
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 0 #define DATAFLASH_CHIP1 (1 << 6)
/** Internal main memory page size for the board's dataflash IC. */ /** Internal main memory page size for the board's dataflash IC. */
#define DATAFLASH_PAGE_SIZE 512 #define DATAFLASH_PAGE_SIZE 512
@ -138,7 +138,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -149,7 +149,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -66,7 +66,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 4) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_DDR DDRB #define DATAFLASH_CHIPCS_DDR DDRB
#define DATAFLASH_CHIPCS_PORT PORTB #define DATAFLASH_CHIPCS_PORT PORTB
#endif #endif
@ -77,10 +77,10 @@
#define DATAFLASH_TOTALCHIPS 1 #define DATAFLASH_TOTALCHIPS 1
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 0 #define DATAFLASH_CHIP1 (1 << 4)
/** Internal main memory page size for the board's dataflash IC. */ /** Internal main memory page size for the board's dataflash IC. */
#define DATAFLASH_PAGE_SIZE 512 #define DATAFLASH_PAGE_SIZE 512
@ -138,7 +138,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -149,7 +149,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -66,7 +66,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 2) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_DDR DDRC #define DATAFLASH_CHIPCS_DDR DDRC
#define DATAFLASH_CHIPCS_PORT PORTC #define DATAFLASH_CHIPCS_PORT PORTC
#endif #endif
@ -77,10 +77,10 @@
#define DATAFLASH_TOTALCHIPS 1 #define DATAFLASH_TOTALCHIPS 1
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 0 #define DATAFLASH_CHIP1 (1 << 2)
/** Internal main memory page size for the board's dataflash IC. */ /** Internal main memory page size for the board's dataflash IC. */
#define DATAFLASH_PAGE_SIZE 1024 #define DATAFLASH_PAGE_SIZE 1024
@ -138,7 +138,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -149,7 +149,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -67,7 +67,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK ((1 << 1) | (1 << 0)) #define DATAFLASH_CHIPCS_MASK (DATAFLASH_CHIP1 | DATAFLASH_CHIP2)
#define DATAFLASH_CHIPCS_DDR DDRE #define DATAFLASH_CHIPCS_DDR DDRE
#define DATAFLASH_CHIPCS_PORT PORTE #define DATAFLASH_CHIPCS_PORT PORTE
#endif #endif
@ -78,13 +78,13 @@
#define DATAFLASH_TOTALCHIPS 2 #define DATAFLASH_TOTALCHIPS 2
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 (1 << 1) #define DATAFLASH_CHIP1 (1 << 0)
/** Mask for the second dataflash chip selected. */ /** Mask for the second dataflash chip selected. */
#define DATAFLASH_CHIP2 (1 << 0) #define DATAFLASH_CHIP2 (1 << 1)
/** Internal main memory page size for the board's dataflash ICs. */ /** Internal main memory page size for the board's dataflash ICs. */
#define DATAFLASH_PAGE_SIZE 1024 #define DATAFLASH_PAGE_SIZE 1024
@ -142,7 +142,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -153,7 +153,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -83,7 +83,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 5) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_DDR DDRB #define DATAFLASH_CHIPCS_DDR DDRB
#define DATAFLASH_CHIPCS_PORT PORTB #define DATAFLASH_CHIPCS_PORT PORTB
#endif #endif
@ -94,10 +94,10 @@
#define DATAFLASH_TOTALCHIPS 1 #define DATAFLASH_TOTALCHIPS 1
/** Mask for no dataflash chip selected. */ /** Mask for no dataflash chip selected. */
#define DATAFLASH_NO_CHIP DATAFLASH_CHIPCS_MASK #define DATAFLASH_NO_CHIP 0
/** Mask for the first dataflash chip selected. */ /** Mask for the first dataflash chip selected. */
#define DATAFLASH_CHIP1 0 #define DATAFLASH_CHIP1 (1 << 5)
#if ((BOARD != BOARD_XPLAIN_REV1) || defined(__DOXYGEN__)) #if ((BOARD != BOARD_XPLAIN_REV1) || defined(__DOXYGEN__))
/** Internal main memory page size for the board's dataflash ICs. */ /** Internal main memory page size for the board's dataflash ICs. */
@ -161,7 +161,7 @@
static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
static inline uint8_t Dataflash_GetSelectedChip(void) static inline uint8_t Dataflash_GetSelectedChip(void)
{ {
return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
} }
/** Selects the given dataflash chip. /** Selects the given dataflash chip.
@ -172,7 +172,7 @@
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
static inline void Dataflash_SelectChip(const uint8_t ChipMask) static inline void Dataflash_SelectChip(const uint8_t ChipMask)
{ {
DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask); DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask);
} }
/** Deselects the current dataflash chip, so that no dataflash is selected. */ /** Deselects the current dataflash chip, so that no dataflash is selected. */

@ -66,7 +66,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 4) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_PORT PORTF #define DATAFLASH_CHIPCS_PORT PORTF
#endif #endif

@ -66,7 +66,7 @@
/* Private Interface - For use in library only: */ /* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
/* Macros: */ /* Macros: */
#define DATAFLASH_CHIPCS_MASK (1 << 2) #define DATAFLASH_CHIPCS_MASK DATAFLASH_CHIP1
#define DATAFLASH_CHIPCS_PORT PORTD #define DATAFLASH_CHIPCS_PORT PORTD
#endif #endif

Loading…
Cancel
Save