diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/i2c-pp5020.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/firmware/drivers/i2c-pp5020.c b/firmware/drivers/i2c-pp5020.c index 0c594ecbe3..232de9cb5a 100644 --- a/firmware/drivers/i2c-pp5020.c +++ b/firmware/drivers/i2c-pp5020.c | |||
@@ -81,18 +81,16 @@ static int ipod_i2c_read_byte(unsigned int addr, unsigned int *data) | |||
81 | 81 | ||
82 | outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL); | 82 | outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL); |
83 | 83 | ||
84 | set_irq_level(old_irq_level); | ||
85 | |||
86 | if (data) | 84 | if (data) |
87 | { | 85 | { |
88 | if (ipod_i2c_wait_not_busy() < 0) | 86 | if (ipod_i2c_wait_not_busy() < 0) |
89 | { | 87 | { |
88 | set_irq_level(old_irq_level); | ||
90 | return -1; | 89 | return -1; |
91 | } | 90 | } |
92 | old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
93 | *data = inb(IPOD_I2C_DATA0); | 91 | *data = inb(IPOD_I2C_DATA0); |
94 | set_irq_level(old_irq_level); | ||
95 | } | 92 | } |
93 | set_irq_level(old_irq_level); | ||
96 | } | 94 | } |
97 | 95 | ||
98 | return 0; | 96 | return 0; |