diff options
Diffstat (limited to 'lib/logic_pio.c')
-rw-r--r-- | lib/logic_pio.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/logic_pio.c b/lib/logic_pio.c index 761296376fbc..d0165c88f705 100644 --- a/lib/logic_pio.c +++ b/lib/logic_pio.c | |||
@@ -35,7 +35,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) | |||
35 | struct logic_pio_hwaddr *range; | 35 | struct logic_pio_hwaddr *range; |
36 | resource_size_t start; | 36 | resource_size_t start; |
37 | resource_size_t end; | 37 | resource_size_t end; |
38 | resource_size_t mmio_sz = 0; | 38 | resource_size_t mmio_end = 0; |
39 | resource_size_t iio_sz = MMIO_UPPER_LIMIT; | 39 | resource_size_t iio_sz = MMIO_UPPER_LIMIT; |
40 | int ret = 0; | 40 | int ret = 0; |
41 | 41 | ||
@@ -56,7 +56,7 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) | |||
56 | /* for MMIO ranges we need to check for overlap */ | 56 | /* for MMIO ranges we need to check for overlap */ |
57 | if (start >= range->hw_start + range->size || | 57 | if (start >= range->hw_start + range->size || |
58 | end < range->hw_start) { | 58 | end < range->hw_start) { |
59 | mmio_sz += range->size; | 59 | mmio_end = range->io_start + range->size; |
60 | } else { | 60 | } else { |
61 | ret = -EFAULT; | 61 | ret = -EFAULT; |
62 | goto end_register; | 62 | goto end_register; |
@@ -69,16 +69,16 @@ int logic_pio_register_range(struct logic_pio_hwaddr *new_range) | |||
69 | 69 | ||
70 | /* range not registered yet, check for available space */ | 70 | /* range not registered yet, check for available space */ |
71 | if (new_range->flags == LOGIC_PIO_CPU_MMIO) { | 71 | if (new_range->flags == LOGIC_PIO_CPU_MMIO) { |
72 | if (mmio_sz + new_range->size - 1 > MMIO_UPPER_LIMIT) { | 72 | if (mmio_end + new_range->size - 1 > MMIO_UPPER_LIMIT) { |
73 | /* if it's too big check if 64K space can be reserved */ | 73 | /* if it's too big check if 64K space can be reserved */ |
74 | if (mmio_sz + SZ_64K - 1 > MMIO_UPPER_LIMIT) { | 74 | if (mmio_end + SZ_64K - 1 > MMIO_UPPER_LIMIT) { |
75 | ret = -E2BIG; | 75 | ret = -E2BIG; |
76 | goto end_register; | 76 | goto end_register; |
77 | } | 77 | } |
78 | new_range->size = SZ_64K; | 78 | new_range->size = SZ_64K; |
79 | pr_warn("Requested IO range too big, new size set to 64K\n"); | 79 | pr_warn("Requested IO range too big, new size set to 64K\n"); |
80 | } | 80 | } |
81 | new_range->io_start = mmio_sz; | 81 | new_range->io_start = mmio_end; |
82 | } else if (new_range->flags == LOGIC_PIO_INDIRECT) { | 82 | } else if (new_range->flags == LOGIC_PIO_INDIRECT) { |
83 | if (iio_sz + new_range->size - 1 > IO_SPACE_LIMIT) { | 83 | if (iio_sz + new_range->size - 1 > IO_SPACE_LIMIT) { |
84 | ret = -E2BIG; | 84 | ret = -E2BIG; |