skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
mohitmishra786/low-level-dev-skills244 installs

platform-device-model

Platform device model skill for Linux driver binding. Use when implementing platform_driver probe/remove, sysfs attributes, device properties, or deferred probe. Activates on queries about platform_device, platform_driver, driver model, sysfs, probe remove, or Linux device bus.

How do I install this agent skill?

npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill platform-device-model
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill is an educational resource for Linux kernel driver development, providing code templates and standard debugging commands. No security risks were identified.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

Platform Device Model

Purpose

Explain the Linux driver model for platform (and similar) buses: struct device, device_driver, probe/remove, resource acquisition, sysfs, and deferred probe — the glue between device tree and driver code.

When to Use

  • Implementing or debugging platform_driver lifecycle
  • Exposing driver state via sysfs
  • Understanding uevent / udev device node creation
  • Before skills/kernel-dev/writing-char-drivers

Workflow

1. Object hierarchy

bus_type (platform, amba, pci, i2c, spi)
├── struct device        — hardware instance
└── struct device_driver — driver logic
        └── probe(dev) / remove(dev)

Platform devices often come from DT (of_platform) or legacy board files.

2. Platform driver skeleton

static int my_probe(struct platform_device *pdev)
{
    struct resource *res;
    void __iomem *base;

    res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    base = devm_ioremap_resource(&pdev->dev, res);
    if (IS_ERR(base))
        return PTR_ERR(base);

    platform_set_drvdata(pdev, priv);
    return 0;
}

static void my_remove(struct platform_device *pdev)
{
    /* devm_* auto-cleanup on remove */
}

static struct platform_driver my_pdrv = {
    .probe  = my_probe,
    .remove = my_remove,
    .driver = {
        .name = "my-dev",
        .of_match_table = my_of_match,
    },
};
module_platform_driver(my_pdrv);

Prefer devm_* helpers for automatic unwind.

3. Device properties (DT / ACPI)

u32 speed;
device_property_read_u32(&pdev->dev, "clock-speed", &speed);
bool flag = device_property_present(&pdev->dev, "feature-x");

4. Sysfs (driver visibility)

static ssize_t status_show(struct device *dev,
                           struct device_attribute *attr, char *buf)
{
    return sysfs_emit(buf, "ok\n");
}
static DEVICE_ATTR_RO(status);

/* in probe */
device_create_file(&pdev->dev, &dev_attr_status);

5. Deferred probe

Return -EPROBE_DEFER when a clock, regulator, or bus is not ready — core retries later.

6. Debug

ls /sys/bus/platform/devices/
ls /sys/bus/platform/drivers/
cat /sys/kernel/debug/devices_deferred  # if debugfs enabled
udevadm monitor

7. Agent usage

/platform-device-model Convert legacy board file driver to DT platform_driver with devm_ioremap

Common Problems

SymptomCauseFix
-EBUSY on probeResource claimed twiceCheck status / duplicate nodes
No /dev nodeChar device not registeredSee writing-char-drivers
Deferred foreverSupplier driver missingFix DT dependency chain
Remove crashManual free vs devm mismatchUse devm consistently
Name mismatch.name vs compatibleOF uses of_match_table

Related Skills

  • skills/kernel-dev/device-tree — hardware description
  • skills/kernel/device-drivers — IRQ, DMA, regmap depth
  • skills/kernel-dev/writing-char-drivers — userspace interface
  • skills/kernel-dev/bus-drivers-i2c-spi — other bus types
  • skills/low-level-programming/linux-kernel-modules — module loading

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/mohitmishra786/low-level-dev-skills/platform-device-model">View platform-device-model on skillZs</a>