diff --git a/nuttx-patches/i2c_hotfix.patch b/nuttx-patches/i2c_hotfix.patch new file mode 100644 index 000000000000..c7eef298f331 --- /dev/null +++ b/nuttx-patches/i2c_hotfix.patch @@ -0,0 +1,189 @@ +diff --git NuttX/nuttx/arch/arm/src/stm32/stm32_i2c.c NuttX/nuttx/arch/arm/src/stm32/stm32_i2c.c +index 631ba66..654d18a 100644 +--- NuttX/nuttx/arch/arm/src/stm32/stm32_i2c.c ++++ NuttX/nuttx/arch/arm/src/stm32/stm32_i2c.c +@@ -7,7 +7,7 @@ + * + * With extensions, modifications by: + * +- * Copyright (C) 2011-2014, 2016 Gregory Nutt. All rights reserved. ++ * Copyright (C) 2011-2014, 2016-2017 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without +@@ -670,15 +670,15 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */ +diff --git NuttX/nuttx/arch/arm/src/stm32/stm32_i2c_alt.c NuttX/nuttx/arch/arm/src/stm32/stm32_i2c_alt.c +index 545a647..61cea4e 100644 +--- NuttX/nuttx/arch/arm/src/stm32/stm32_i2c_alt.c ++++ NuttX/nuttx/arch/arm/src/stm32/stm32_i2c_alt.c +@@ -7,7 +7,7 @@ + * + * With extensions, modifications by: + * +- * Copyright (C) 2011-2014, 2016 Gregory Nutt. All rights reserved. ++ * Copyright (C) 2011-2014, 2016-2017 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Copyright( C) 2014 Patrizio Simona. All rights reserved. +@@ -678,15 +678,15 @@ static int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */ +diff --git NuttX/nuttx/arch/arm/src/stm32/stm32f30xxx_i2c.c NuttX/nuttx/arch/arm/src/stm32/stm32f30xxx_i2c.c +index 312e0b4..193ccb8 100644 +--- NuttX/nuttx/arch/arm/src/stm32/stm32f30xxx_i2c.c ++++ NuttX/nuttx/arch/arm/src/stm32/stm32f30xxx_i2c.c +@@ -7,7 +7,7 @@ + * + * With extensions and modifications for the F1, F2, and F4 by: + * +- * Copyright (C) 2011-2013, 2016 Gregory Nutt. All rights reserved. ++ * Copyright (C) 2011-2013, 2016-2017 Gregory Nutt. All rights reserved. + * Author: Gregroy Nutt + * + * And this version for the STM32 F3 by +@@ -704,15 +704,15 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */ +diff --git NuttX/nuttx/arch/arm/src/stm32/stm32f40xxx_i2c.c NuttX/nuttx/arch/arm/src/stm32/stm32f40xxx_i2c.c +index 2bb715c..974fab8 100644 +--- NuttX/nuttx/arch/arm/src/stm32/stm32f40xxx_i2c.c ++++ NuttX/nuttx/arch/arm/src/stm32/stm32f40xxx_i2c.c +@@ -7,7 +7,7 @@ + * + * With extensions, modifications by: + * +- * Copyright (C) 2011-2014, 2016 Gregory Nutt. All rights reserved. ++ * Copyright (C) 2011-2014, 2016-2017 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without +@@ -672,15 +672,15 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */ +diff --git NuttX/nuttx/arch/arm/src/stm32f7/stm32_i2c.c NuttX/nuttx/arch/arm/src/stm32f7/stm32_i2c.c +index d089db9..1b5951d 100644 +--- NuttX/nuttx/arch/arm/src/stm32f7/stm32_i2c.c ++++ NuttX/nuttx/arch/arm/src/stm32f7/stm32_i2c.c +@@ -897,15 +897,15 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */ +diff --git NuttX/nuttx/arch/arm/src/stm32l4/stm32l4_i2c.c NuttX/nuttx/arch/arm/src/stm32l4/stm32l4_i2c.c +index eed199f..d5027bf 100644 +--- NuttX/nuttx/arch/arm/src/stm32l4/stm32l4_i2c.c ++++ NuttX/nuttx/arch/arm/src/stm32l4/stm32l4_i2c.c +@@ -4,7 +4,7 @@ + * + * Copyright (C) 2011 Uros Platise. All rights reserved. + * Author: Uros Platise +- * Copyright (C) 2011-2013, 2016 Gregory Nutt. All rights reserved. ++ * Copyright (C) 2011-2013, 2016-2017 Gregory Nutt. All rights reserved. + * Author: Gregroy Nutt + * Author: John Wharington + * Author: Sebastien Lorquet +@@ -648,15 +648,15 @@ static inline int stm32l4_i2c_sem_waitdone(FAR struct stm32l4_i2c_priv_s *priv) + + do + { ++ /* Calculate the elapsed time */ ++ ++ elapsed = clock_systimer() - start; ++ + /* Poll by simply calling the timer interrupt handler until it + * reports that it is done. + */ + + stm32l4_i2c_isr(priv); +- +- /* Calculate the elapsed time */ +- +- elapsed = clock_systimer() - start; + } + + /* Loop until the transfer is complete. */