| .. | .. |
|---|
| 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; |
|---|