diff --git a/runtime/indent/dts.vim b/runtime/indent/dts.vim
new file mode 100644
index 0000000..e87f815
--- /dev/null
+++ b/runtime/indent/dts.vim
@@ -0,0 +1,63 @@
+" Vim indent file
+" Language:		Device Tree
+" Maintainer:		Roland Hieber, Pengutronix <rhi@pengutronix.de>
+"
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal nosmartindent
+setlocal indentkeys=o,O,0},0<>>,!<Ctrl-F>
+setlocal indentexpr=GetDTSIndent()
+setlocal nolisp
+
+let b:undo_indent = 'setl autoindent< smartindent< indentkeys< indentexpr< lisp<'
+
+function GetDTSIndent()
+    let sw        = shiftwidth()
+    let lnum      = v:lnum
+    let line      = getline(lnum)
+    let prevline  = getline(prevnonblank(lnum-1))
+    let prevind   = indent(prevnonblank(lnum-1))
+
+    if prevnonblank(lnum-1) < 1
+        return 0
+    endif
+
+    " Don't indent header and preprocessor directives
+    if line =~ '^\s*\(/dts-\|#\(include\|define\|undef\|warn\(ing\)\?\|error\|if\(n\?def\)\?\|else\|elif\|endif\)\)'
+        return 0
+
+    " Don't indent /node and &label blocks
+    elseif line =~ '^\s*[/&].\+{\s*$'
+        return 0
+
+    " Indent to matching bracket or remove one shiftwidth if line begins with } or >
+    elseif line =~ '^\s*[}>]'
+        " set cursor to closing bracket on current line
+        let col = matchend(line, '^\s*[>}]')
+        call cursor(lnum, col)
+        
+        " determine bracket type, {} or <>
+        let pair = strpart('{}<>', stridx('}>', line[col-1]) * 2, 2)
+
+        " find matching bracket pair
+        let pairline = searchpair(pair[0], '', pair[1], 'bW')
+
+        if pairline > 0 
+            return indent(pairline)
+        else
+            return prevind - sw
+        endif
+
+    " else, add one level of indent if line ends in { or < or = or ,
+    elseif prevline =~ '[{<=,]$'
+        return prevind + sw
+
+    else
+        return prevind
+    endif
+
+endfunction
