diff options
author | Alexandros C. Couloumbis <alex@ozo.com> | 2010-06-07 05:56:49 +0000 |
---|---|---|
committer | Alexandros C. Couloumbis <alex@ozo.com> | 2010-06-07 05:56:49 +0000 |
commit | 80d01892f19866b5afed8c0097dacad0f5ac53f1 (patch) | |
tree | c994044b122c2d373cc4d77fadb3f6b53a228431 /target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch | |
parent | bb7d9586c8bb1a6b5354d6c24ad9a641e1796274 (diff) | |
download | upstream-80d01892f19866b5afed8c0097dacad0f5ac53f1.tar.gz upstream-80d01892f19866b5afed8c0097dacad0f5ac53f1.tar.bz2 upstream-80d01892f19866b5afed8c0097dacad0f5ac53f1.zip |
generic-2.6: add kernel 2.6.35 preliminary support (patches)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21696 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch')
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch b/target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch new file mode 100644 index 0000000000..19032881b8 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.35/920-04-spi-gpio-implement-spi-delay.patch @@ -0,0 +1,58 @@ +Implement the SPI-GPIO delay function for busses that need speed limitation. + +--mb + + + +--- a/drivers/spi/spi_gpio.c ++++ b/drivers/spi/spi_gpio.c +@@ -21,6 +21,7 @@ + #include <linux/init.h> + #include <linux/platform_device.h> + #include <linux/gpio.h> ++#include <linux/delay.h> + + #include <linux/spi/spi.h> + #include <linux/spi/spi_bitbang.h> +@@ -69,6 +70,7 @@ struct spi_gpio { + * #define SPI_MOSI_GPIO 120 + * #define SPI_SCK_GPIO 121 + * #define SPI_N_CHIPSEL 4 ++ * #undef NEED_SPIDELAY + * #include "spi_gpio.c" + */ + +@@ -76,6 +78,7 @@ struct spi_gpio { + #define DRIVER_NAME "spi_gpio" + + #define GENERIC_BITBANG /* vs tight inlines */ ++#define NEED_SPIDELAY 1 + + /* all functions referencing these symbols must define pdata */ + #define SPI_MISO_GPIO ((pdata)->miso) +@@ -120,12 +123,20 @@ static inline int getmiso(const struct s + #undef pdata + + /* +- * NOTE: this clocks "as fast as we can". It "should" be a function of the +- * requested device clock. Software overhead means we usually have trouble +- * reaching even one Mbit/sec (except when we can inline bitops), so for now +- * we'll just assume we never need additional per-bit slowdowns. ++ * NOTE: to clock "as fast as we can", set spi_device.max_speed_hz ++ * and spi_transfer.speed_hz to 0. ++ * Otherwise this is a function of the requested device clock. ++ * Software overhead means we usually have trouble ++ * reaching even one Mbit/sec (except when we can inline bitops). So on small ++ * embedded devices with fast SPI slaves you usually don't need a delay. + */ +-#define spidelay(nsecs) do {} while (0) ++static inline void spidelay(unsigned nsecs) ++{ ++#ifdef NEED_SPIDELAY ++ if (unlikely(nsecs)) ++ ndelay(nsecs); ++#endif /* NEED_SPIDELAY */ ++} + + #define EXPAND_BITBANG_TXRX + #include <linux/spi/spi_bitbang.h> |