简介:RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节 设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource函数源码如下: 新内核实现 目录:v4.19/drivers/base/platform.c /*...
😄 📢设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource函数源码如下: 新内核实现 目录:v4.19/drivers/base/platform.c /** * platform_get_resource - get a resource for a device * @dev: ...
在设备树中,硬件资源的信息通常通过节点的属性来描述,如reg属性用于描述内存映射资源的地址和大小,interrupts属性用于描述中断资源。当设备树被内核解析后,这些信息会被转换成platform_device结构体的resource数组。 驱动程序可以通过调用platform_get_resource函数,并传入相应的platform_device指针、资源类型和资源号来获取这些...
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 the io and ir...
2) 如果有reg和interrupts的相关属性, 运行of_address_to_resource 和 of_irq_to_resource_table, 加入到dev->resource dev->num_resources = num_reg + num_irq; dev->resource = res; for (i = 0; i < num_reg; i++, res++) { rc = of_address_to_resource(np, i, res); ...
When I do# ] hexdum -C 'reg' I see the values in my dev entry BUT, the platform_get_resource fails. --- Quote End --- I had a line missing in my .dts file so I generated another .dtb file and now the driver loads. STILL HAVE A PROBELM - when I use the driver I...
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); ...
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; ...