int __init init_common(struct tsens_device *tmdev)
 {
-       void __iomem *tm_base;
+       void __iomem *tm_base, *srot_base;
        struct resource *res;
        struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
 
        if (!op)
                return -EINVAL;
 
-       /* The driver only uses the TM register address space for now */
        if (op->num_resources > 1) {
+               /* DT with separate SROT and TM address space */
                tmdev->tm_offset = 0;
+               res = platform_get_resource(op, IORESOURCE_MEM, 1);
+               srot_base = devm_ioremap_resource(&op->dev, res);
+               if (IS_ERR(srot_base))
+                       return PTR_ERR(srot_base);
+
+               tmdev->srot_map = devm_regmap_init_mmio(tmdev->dev,
+                                                       srot_base, &tsens_config);
+               if (IS_ERR(tmdev->srot_map))
+                       return PTR_ERR(tmdev->srot_map);
+
        } else {
                /* old DTs where SROT and TM were in a contiguous 2K block */
                tmdev->tm_offset = 0x1000;