.. | .. |
---|
24 | 24 | struct reset_control *rsts; |
---|
25 | 25 | phys_addr_t mem_start; |
---|
26 | 26 | size_t mem_size; |
---|
| 27 | + bool mem_no_free; |
---|
27 | 28 | }; |
---|
28 | 29 | |
---|
29 | 30 | static atomic_t mcu_done = ATOMIC_INIT(0); |
---|
.. | .. |
---|
89 | 90 | |
---|
90 | 91 | start = phys_to_virt(serv->mem_start); |
---|
91 | 92 | end = start + serv->mem_size; |
---|
92 | | - free_reserved_area(start, end, -1, "rtos"); |
---|
| 93 | + if (!serv->mem_no_free) |
---|
| 94 | + free_reserved_area(start, end, -1, "rtos"); |
---|
93 | 95 | |
---|
94 | 96 | spin_lock(&lock); |
---|
95 | 97 | if (atomic_read(&mcu_done)) { |
---|
.. | .. |
---|
150 | 152 | if (IS_ERR(serv->rsts) && PTR_ERR(serv->rsts) == -EPROBE_DEFER) |
---|
151 | 153 | return -EPROBE_DEFER; |
---|
152 | 154 | |
---|
| 155 | + serv->mem_no_free = device_property_read_bool(&pdev->dev, "memory-no-free"); |
---|
| 156 | + |
---|
153 | 157 | platform_set_drvdata(pdev, serv); |
---|
154 | 158 | |
---|
155 | 159 | mbox_cl = &serv->mbox_cl; |
---|