| .. | .. |
|---|
| 13 | 13 | |
|---|
| 14 | 14 | static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id) |
|---|
| 15 | 15 | { |
|---|
| 16 | + struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev); |
|---|
| 17 | + |
|---|
| 16 | 18 | rcdev->ops->assert(rcdev, id); |
|---|
| 17 | | - udelay(1); |
|---|
| 19 | + fsleep(rst->reset_map[id].udelay ?: 1); /* use 1 us as default */ |
|---|
| 20 | + |
|---|
| 18 | 21 | rcdev->ops->deassert(rcdev, id); |
|---|
| 19 | 22 | return 0; |
|---|
| 20 | 23 | } |
|---|
| .. | .. |
|---|
| 28 | 31 | |
|---|
| 29 | 32 | rst = to_qcom_reset_controller(rcdev); |
|---|
| 30 | 33 | map = &rst->reset_map[id]; |
|---|
| 31 | | - mask = BIT(map->bit); |
|---|
| 34 | + mask = map->bitmask ? map->bitmask : BIT(map->bit); |
|---|
| 32 | 35 | |
|---|
| 33 | 36 | return regmap_update_bits(rst->regmap, map->reg, mask, mask); |
|---|
| 34 | 37 | } |
|---|
| .. | .. |
|---|
| 42 | 45 | |
|---|
| 43 | 46 | rst = to_qcom_reset_controller(rcdev); |
|---|
| 44 | 47 | map = &rst->reset_map[id]; |
|---|
| 45 | | - mask = BIT(map->bit); |
|---|
| 48 | + mask = map->bitmask ? map->bitmask : BIT(map->bit); |
|---|
| 46 | 49 | |
|---|
| 47 | 50 | return regmap_update_bits(rst->regmap, map->reg, mask, 0); |
|---|
| 48 | 51 | } |
|---|