RK 方案u-boot阶段添加驱动

2024-08-30 02:36
文章标签 驱动 boot 阶段 方案 rk

本文主要是介绍RK 方案u-boot阶段添加驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

驱动部分:
u-boot/drivers/video/drm/gpio_init.c

/** (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd** SPDX-License-Identifier:	GPL-2.0+*/#include <config.h>
#include <common.h>
#include <errno.h>
#include <malloc.h>
#include <video.h>
#include <backlight.h>
#include <asm/gpio.h>
#include <dm/device.h>
#include <dm/read.h>
#include <dm/uclass.h>
#include <dm/uclass-id.h>
#include <linux/media-bus-format.h>
#include <power/regulator.h>
//DECLARE_GLOBAL_DATA_PTR;
struct customer_gpio_priv {struct udevice *reg;struct gpio_desc wifi_power_gpio;struct gpio_desc usb_switch_gpio;struct gpio_desc usb_switch_gpio2;struct gpio_desc wifi_power_gpio_01;struct gpio_desc power_led_ctrl;uint default_level;uint min_level;uint max_level;
};
static int customer_gpio_ofdata_to_platdata(struct udevice *dev)
{printf("##fan##%s\n",__func__);	return 0;
}static int customer_gpio_probe(struct udevice *dev)
{int ret;
//	struct gpio_desc reset_gpio;struct customer_gpio_priv *priv = dev_get_priv(dev);ret = gpio_request_by_name(dev, "usb-switch2", 0,&priv->usb_switch_gpio2, GPIOD_IS_OUT);if (ret && ret != -ENOENT) {printf("%s: Cannot get usb-switch2: %d\n", __func__, ret);return ret;}printf("####set gpio switch gpio2 low\n");dm_gpio_set_value(&priv->usb_switch_gpio2, 0);ret = gpio_request_by_name(dev, "wifi-gpios", 0,&priv->wifi_power_gpio, GPIOD_IS_OUT);if (ret && ret != -ENOENT) {printf("%s: Cannot get wifi GPIO: %d\n", __func__, ret);return ret;}ret = gpio_request_by_name(dev, "usb-switch", 0,&priv->usb_switch_gpio, GPIOD_IS_OUT);if (ret && ret != -ENOENT) {printf("%s: Cannot get usb-switch11: %d\n", __func__, ret);return ret;}ret = gpio_request_by_name(dev, "power-led-ctl", 0,&priv->power_led_ctrl, GPIOD_IS_OUT);if (ret && ret != -ENOENT) {printf("%s: Cannot get power led ctrl  GPIO: %d\n", __func__, ret);return ret;}dm_gpio_set_value(&priv->usb_switch_gpio, 0);printf("%s:  usb-switch---0h:\n", __func__);mdelay(50);dm_gpio_set_value(&priv->usb_switch_gpio, 1);printf("%s:  usb-switch---1h:\n", __func__);dm_gpio_set_value(&priv->wifi_power_gpio, 1);// dm_gpio_set_value(&priv->wifi_power_gpio_01, 1);mdelay(50);dm_gpio_set_value(&priv->wifi_power_gpio, 0);dm_gpio_set_value(&priv->power_led_ctrl, 1);return 0;
}static const struct udevice_id customer_gpio_ids[] = {//{ .compatible = "mmc-pwrseq-simple"},{ .compatible = "customer-gpio-init", },{}
};U_BOOT_DRIVER(customer_gpio) = {.name = "customer_gpio",.id = UCLASS_CUSTOMER_GPIO,  // 跟下面定义对应.of_match = customer_gpio_ids,.ofdata_to_platdata = customer_gpio_ofdata_to_platdata,.probe = customer_gpio_probe,.priv_auto_alloc_size = sizeof(struct customer_gpio_priv),
//	.platdata_auto_alloc_size = sizeof(struct customer_gpio_priv),
};

u-boot/drivers/video/drm/Makefile 让驱动编译进来

在这里插入图片描述

u-boot/include/dm/uclass-id.h 这个匹配驱动中的.id
在这里插入图片描述

这篇关于RK 方案u-boot阶段添加驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119560

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

RabbitMQ使用及与spring boot整合

1.MQ   消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法   应用:不同进程Process/线程Thread之间通信   比较流行的中间件:     ActiveMQ     RabbitMQ(非常重量级,更适合于企业级的开发)     Kafka(高吞吐量的分布式发布订阅消息系统)     RocketMQ   在高并发、可靠性、成熟度等

Spring Boot 入门篇

一、简介 Spring Boot是一款开源的Java Web应用框架,旨在简化Spring应用的初始搭建以及开发过程。它整合了Spring技术栈中的诸多关键组件,为开发者提供了一种快速、简便的Spring应用开发方式。Spring Boot遵循“约定优于配置”的原则,通过自动配置、起步依赖和内置的Servlet容器,极大地简化了传统Spring应用的配置和部署过程。 二、Spring Boot

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww