diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch new file mode 100644 index 00000000..239e9933 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0056-Added-check-on-EEPROM-revision-to-prevent-interpreti.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From 8c79cdf0bbe2bff8043cf81da7b8793c21f64f17 Mon Sep 17 00:00:00 2001 | ||
2 | From: Bas Laarhoven <sjml@xs4all.nl> | ||
3 | Date: Tue, 15 May 2012 10:00:47 +0200 | ||
4 | Subject: [PATCH 56/56] Added check on EEPROM revision to prevent interpreting | ||
5 | unknown formats. | ||
6 | |||
7 | Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> | ||
8 | --- | ||
9 | arch/arm/mach-omap2/board-am335xevm.c | 16 +++++++++++++--- | ||
10 | 1 files changed, 13 insertions(+), 3 deletions(-) | ||
11 | |||
12 | diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c | ||
13 | index 0fa8a32..68ddfe2 100644 | ||
14 | --- a/arch/arm/mach-omap2/board-am335xevm.c | ||
15 | +++ b/arch/arm/mach-omap2/board-am335xevm.c | ||
16 | @@ -2481,12 +2481,21 @@ static int bone_io_config_pin( const char* pin_name, pin_def eeprom_setting) | ||
17 | pr_info( "+%s+\n", status); \ | ||
18 | } while (0) | ||
19 | |||
20 | -static void bone_io_config_from_cape_eeprom( void) | ||
21 | +static int bone_io_config_from_cape_eeprom( void) | ||
22 | { | ||
23 | int i; | ||
24 | int cnt = BIG_ENDIAN_16( cape_config.numpins); | ||
25 | u16* pmuxdata; | ||
26 | char status[ NR_ITEMS( cape_config.muxdata) + 1]; | ||
27 | + char revision[ NR_ITEMS( cape_config.format_revision) + 1]; | ||
28 | + | ||
29 | + strncpy( revision, cape_config.format_revision, NR_ITEMS( revision) - 1); | ||
30 | + revision[ NR_ITEMS( revision) - 1] = '\0'; | ||
31 | + if (strcmp( revision, "A0") != 0) { | ||
32 | + pr_warn( "BeagleBone cape: configuration revision '%s' is not supported\n", | ||
33 | + revision); | ||
34 | + return -1; | ||
35 | + } | ||
36 | |||
37 | // Workaround for capes that have encoded this as ASCII | ||
38 | if (cnt > 256) { | ||
39 | @@ -2494,8 +2503,8 @@ static void bone_io_config_from_cape_eeprom( void) | ||
40 | cnt = (cape_config.numpins & 255) - '0'; | ||
41 | cnt = 10 * cnt + ((cape_config.numpins >> 8) & 255) - '0'; | ||
42 | } | ||
43 | - pr_info( "BeagleBone cape: configuring %2d out of %2d signals:\n", | ||
44 | - cnt, NR_ITEMS( cape_config.muxdata)); | ||
45 | + pr_info( "BeagleBone cape: revision %s format, configuring %2d out of %2d signals:\n", | ||
46 | + revision, cnt, NR_ITEMS( cape_config.muxdata)); | ||
47 | RULER( NR_ITEMS( cape_config.muxdata)); | ||
48 | for (i = 0, pmuxdata = cape_config.muxdata ; i < NR_ITEMS( cape_config.muxdata) ; ++i, ++pmuxdata) { | ||
49 | const char* pin_name = cape_pins[ i]; | ||
50 | @@ -2517,6 +2526,7 @@ static void bone_io_config_from_cape_eeprom( void) | ||
51 | status[ NR_ITEMS( cape_config.muxdata)] = '\0'; | ||
52 | pr_info( "|%s|\n", status); | ||
53 | RULER( NR_ITEMS( cape_config.muxdata)); | ||
54 | + return 0; | ||
55 | } | ||
56 | |||
57 | static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context) | ||
58 | -- | ||
59 | 1.7.7.6 | ||
60 | |||