😄 📢设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource函数源码如下: 新内核实现 目录:v4.19/drivers/base/platform.c /** * platform_get_resource - get a resource for a device * @dev: ...
简介: RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节 设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource 函数源码如下: 新内核实现 目录:v4.19/drivers/base/platform.c...
serial_omap_add_console_port(up); ret = uart_add_one_port(&serial_omap_reg, &up->port);if(ret !=0)gotodo_release_region; platform_set_drvdata(pdev, up);return0; err: dev_err(&pdev->dev,"[UART%d]: failure [%s]: %d\n", pdev->id, __func__, ret); do_release_region: ...
struct platform_device *of_device_alloc(struct device_node *np, const char *bus_id, struct device *parent) { struct platform_device *dev; int rc, i, num_reg = 0, num_irq; struct resource *res, temp_res; dev = platform_device_alloc("", -1); if (!dev) return NULL; /* count...
res) { dev_err(dev, "No ctrl reg found\n"); return -ENXIO; } phy_dev->ctrl = res->start; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "param"); if (!res) { dev_err(dev, "No param reg found\n"); return -ENXIO; } phy_dev->param = res...
regc.reg_bits =32; regc.val_bits =32; regc.reg_stride =4; regc.name = name; res =platform_get_resource_byname(pdev, IORESOURCE_MEM, name);if(!res) res = platform_get_resource(pdev, IORESOURCE_MEM, reg_id);if(!res)return-ENODEV; ...