summaryrefslogtreecommitdiff
path: root/firmware/target/arm/i2c-pp.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/i2c-pp.c')
-rw-r--r--firmware/target/arm/i2c-pp.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/firmware/target/arm/i2c-pp.c b/firmware/target/arm/i2c-pp.c
index 1cfbfaeff1..450effc32d 100644
--- a/firmware/target/arm/i2c-pp.c
+++ b/firmware/target/arm/i2c-pp.c
@@ -60,7 +60,7 @@ static int pp_i2c_read_byte(unsigned int addr, unsigned int *data)
60 60
61 { 61 {
62 unsigned int byte; 62 unsigned int byte;
63 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 63 int old_irq_level = disable_irq_save();
64 64
65 /* clear top 15 bits, left shift 1, or in 0x1 for a read */ 65 /* clear top 15 bits, left shift 1, or in 0x1 for a read */
66 I2C_ADDR = ((addr << 17) >> 16) | 0x1 ; 66 I2C_ADDR = ((addr << 17) >> 16) | 0x1 ;
@@ -69,19 +69,19 @@ static int pp_i2c_read_byte(unsigned int addr, unsigned int *data)
69 69
70 I2C_CTRL |= I2C_SEND; 70 I2C_CTRL |= I2C_SEND;
71 71
72 set_irq_level(old_irq_level); 72 restore_irq(old_irq_level);
73 if (pp_i2c_wait_not_busy() < 0) 73 if (pp_i2c_wait_not_busy() < 0)
74 { 74 {
75 return -1; 75 return -1;
76 } 76 }
77 old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 77 old_irq_level = disable_irq_save();
78 78
79 byte = I2C_DATA(0); 79 byte = I2C_DATA(0);
80 80
81 if (data) 81 if (data)
82 *data = byte; 82 *data = byte;
83 83
84 set_irq_level(old_irq_level); 84 restore_irq(old_irq_level);
85 } 85 }
86 86
87 return 0; 87 return 0;
@@ -102,7 +102,7 @@ static int pp_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char
102 } 102 }
103 103
104 { 104 {
105 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 105 int old_irq_level = disable_irq_save();
106 106
107 /* clear top 15 bits, left shift 1 */ 107 /* clear top 15 bits, left shift 1 */
108 I2C_ADDR = (addr << 17) >> 16; 108 I2C_ADDR = (addr << 17) >> 16;
@@ -118,7 +118,7 @@ static int pp_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char
118 118
119 I2C_CTRL |= I2C_SEND; 119 I2C_CTRL |= I2C_SEND;
120 120
121 set_irq_level(old_irq_level); 121 restore_irq(old_irq_level);
122 } 122 }
123 123
124 return 0x0; 124 return 0x0;