Prepare for 0.1.0 release

Prepare for 0.1.0 release by adding documentation, updating
dependencies, and updating Cargo.toml.

Change-Id: I0e9a61629d00985a79a663b707d3a5306e5ed0fe
Signed-off-by: Imre Kis <imre.kis@arm.com>
diff --git a/Cargo.lock b/Cargo.lock
index 85d351b..7a750c7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -37,9 +37,9 @@
 
 [[package]]
 name = "safe-mmio"
-version = "0.2.0"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bc59a975d8faa0b4475145266e9f9eac01f0b3f393d0e5eecc8b88646ca2d29"
+checksum = "f96d86dc25e8f742cf117e00b58db99e0c3505208babc33f124f0067f6c22024"
 dependencies = [
  "zerocopy",
 ]
@@ -63,18 +63,18 @@
 
 [[package]]
 name = "zerocopy"
-version = "0.8.23"
+version = "0.8.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6"
+checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.23"
+version = "0.8.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154"
+checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/Cargo.toml b/Cargo.toml
index ec18ddd..f184a8e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,16 +8,16 @@
     "Balint Dobszay <balint.dobszay@arm.com>",
     "Imre Kis <imre.kis@arm.com>",
 ]
+categories = ["hardware-support", "embedded", "no-std", "no-std::no-alloc"]
 description = "Arm Watchdog Module (SP805) driver"
 edition = "2021"
 license = "MIT OR Apache-2.0"
-repository = "https://git.trustedfirmware.org/rust-spmc/rust-spmc.git"
+repository = "https://git.trustedfirmware.org/rust-spmc/arm-sp805.git"
 keywords = ["arm", "sp805", "watchdog", "timer", "driver"]
+readme = "README.md"
 rust-version = "1.82"
 
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
 [dependencies]
 bitflags = "2.9"
 safe-mmio = "0.2"
-zerocopy = "0.8"
\ No newline at end of file
+zerocopy = "0.8"
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9f4fb11
--- /dev/null
+++ b/README.md
@@ -0,0 +1,64 @@
+# Arm Watchdog Module (SP805) driver
+
+Driver implementation for the [SP805 watchdog module](https://developer.arm.com/documentation/ddi0270/latest/).
+
+## Implemented features
+
+* Enable/disable watchdog timer
+* Update timer value
+
+## Example
+
+```rust
+use arm_sp805::{SP805Registers, Watchdog, UniqueMmioPointer};
+use core::ptr::NonNull;
+# use zerocopy::transmute_mut;
+# let mut fake_registers = [0u32; 1024];
+# let WATCHDOG_ADDRESS : *mut SP805Registers = transmute_mut!(&mut fake_registers);
+# fn handler() {}
+
+// SAFETY: `WATCHDOG_ADDRESS` is the base address of a SP805 watchdog register block. It remains
+// valid for the lifetime of the application and nothing else references this address range.
+let watchdog_pointer = unsafe { UniqueMmioPointer::new(NonNull::new(WATCHDOG_ADDRESS).unwrap()) };
+
+let mut watchdog = Watchdog::new(watchdog_pointer, 0x0001_0000);
+watchdog.enable();
+
+loop {
+  handler();
+  watchdog.update();
+  # break
+}
+```
+
+## License
+
+The project is MIT and Apache-2.0 dual licensed, see `LICENSE-APACHE` and `LICENSE-MIT`.
+
+## Maintainers
+
+arm-sp805 is a trustedfirmware.org maintained project. All contributions are ultimately merged by the maintainers
+listed below.
+
+* Bálint Dobszay <balint.dobszay@arm.com>
+  [balint-dobszay-arm](https://github.com/balint-dobszay-arm)
+* Imre Kis <imre.kis@arm.com>
+  [imre-kis-arm](https://github.com/imre-kis-arm)
+* Sandrine Afsa <sandrine.afsa@arm.com>
+  [sandrine-bailleux-arm](https://github.com/sandrine-bailleux-arm)
+
+## Contributing
+
+Please follow the directions of the [Trusted Firmware Processes](https://trusted-firmware-docs.readthedocs.io/en/latest/generic_processes/index.html)
+
+Contributions are handled through [review.trustedfirmware.org](https://review.trustedfirmware.org/q/project:rust-spmc/arm-pl011-uart).
+
+## Reporting Security Issues
+
+Please follow the directions of the [Trusted Firmware Security Center](https://trusted-firmware-docs.readthedocs.io/en/latest/security_center/index.html)
+
+--------------
+
+*Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com>*
+
+*Arm is a registered trademark of Arm Limited (or its subsidiaries or affiliates).*
diff --git a/src/lib.rs b/src/lib.rs
index 0126c94..b328a86 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,17 +1,15 @@
 // SPDX-FileCopyrightText: Copyright 2023-2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
 // SPDX-License-Identifier: MIT OR Apache-2.0
 
-//! Arm Watchdog Module (SP805) driver
-//!
-//! Driver implementation for the [SP805 watchdog module](https://developer.arm.com/documentation/ddi0270/latest/).
-
 #![no_std]
+#![doc = include_str!("../README.md")]
+#![deny(clippy::undocumented_unsafe_blocks)]
 
 use bitflags::bitflags;
+pub use safe_mmio::UniqueMmioPointer;
 use safe_mmio::{
     field,
     fields::{ReadPure, ReadPureWrite, WriteOnly},
-    UniqueMmioPointer,
 };
 use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout};
 
@@ -41,7 +39,7 @@
     }
 }
 
-/// SP805 register map.
+/// SP805 Watchdog register map.
 #[derive(Clone, Eq, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
 #[repr(C, align(4))]
 pub struct SP805Registers {
@@ -109,16 +107,13 @@
         self.with_unlock(|mut regs| {
             field!(regs, wdog_load).write(load_value);
             field!(regs, wdog_intclr).write(1);
-            field!(regs, wdog_control)
-                .write(ControlRegister::INTEN | ControlRegister::RESEN);
+            field!(regs, wdog_control).write(ControlRegister::INTEN | ControlRegister::RESEN);
         });
     }
 
     /// Disable watchdog
     pub fn disable(&mut self) {
-        self.with_unlock(|mut regs| {
-            field!(regs, wdog_control).write(ControlRegister::empty())
-        });
+        self.with_unlock(|mut regs| field!(regs, wdog_control).write(ControlRegister::empty()));
     }
 
     /// Update watchdog
@@ -143,7 +138,7 @@
     use super::*;
     use zerocopy::transmute_mut;
 
-    const LOAD_VALUE : u32 = 0xabcd_ef01;
+    const LOAD_VALUE: u32 = 0xabcd_ef01;
 
     #[repr(align(4096))]
     pub struct FakeSp805Registers {
@@ -183,7 +178,7 @@
 
     #[test]
     fn enable() {
-          let mut regs = FakeSp805Registers::new();
+        let mut regs = FakeSp805Registers::new();
 
         {
             // Enable
@@ -219,4 +214,4 @@
 
         assert_eq!(LOAD_VALUE, regs.reg_read(0x00));
     }
-}
\ No newline at end of file
+}