{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/projects/linux-i2c-driver",
    "result": {"data":{"mdx":{"frontmatter":{"title":"A Linux Kernel I2C Driver","author":"Souleymane Dembele","date":"2024-05-01"},"body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"A Linux Kernel I2C Driver\",\n  \"slug\": \"projects/linux-i2c-driver\",\n  \"author\": \"Souleymane Dembele\",\n  \"date\": \"2024-05-01\",\n  \"isDraft\": false\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Kernel-space board support and an I2C device driver for a Raspberry Pi\\nperipheral, exercised from user space.\"), mdx(\"h2\", null, \"What it does\"), mdx(\"p\", null, \"I wrote the board support and an I2C driver in the Linux kernel, then drove it\\nfrom a user-space program through syscalls. The project is hands-on practice with\\nthe Linux driver model, device interfaces, and the kernel/user boundary, the same\\nlayer I later relied on for the GEMM accelerator's bring-up.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"slug":"projects/linux-i2c-driver"}},
    "staticQueryHashes": ["3649515864","68838506"]}