mirror of
https://github.com/Fishwaldo/build.git
synced 2025-04-16 02:51:37 +00:00
* [Early WIP] Update sunxi-next to kernel 4.17 * Switch Allwinner 32 and 64bit to U-boot 2018.05 * Adjust patched for 4.17.y / sunxi-next - adjust both configurations - removing FAT support from u-boot (breaks if you try to save) Tested those boards: Cubietruck: wlan fails http://ix.io/1fYS USB OK, HDMI yes Bananapi R40: http://ix.io/1fZm USB OK, HDMI yes Lime A64: USB no, HDMI no, wireless buggy, eMMC yes Orangepi prime H5: OK http://ix.io/1fZJ DVFS no Orangepi2e: DVFS OK, HDMI OK, net OK, wifi OK, eMMC ok, http://ix.io/1fZT * Kernel config update, enabling HDMI on CT+ * Trying to fix A64 HDMI but failed. Fixed M64 ethernet instead * Update orangepioneplus.wip * Update orangepioneplus.wip * Fix H6 build process * Add regulator bits for Orangepizero+, thanks to @5kft * add H5 support for optional 1.3v regulator and 1.3GHz operation This patch adds two optional overlays that can be used to: 1) enable the 1.1v/1.3v regulator on boards that provide the necessary compatible H/W support 2) modify the default CPU clock operating table to add new 1.2GHz and 1.3GHz clocks Note that the generated regulator overlay will only support boards whose 1.1v/1.3v regulator is controlled by GPIO PL6. * updates for the NanoPi NEO Plus2 This change introduces a patch that provides two changes for the NanoPi NEO Plus2: * Configure the "cpu0" to use the "vdd_cpux" regulator; this enables the ability to use higher CPU clocks * Correct the configurations of the on-board power and status LEDs * Adjust nightly building and few boards config cleanup
107 lines
2.7 KiB
Diff
107 lines
2.7 KiB
Diff
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
|
|
index e15fa2389e3f..20193d6f33ba 100644
|
|
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
|
|
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
|
|
@@ -231,12 +231,55 @@ struct endpoint_list {
|
|
DECLARE_KFIFO(fifo, struct device_node *, 16);
|
|
};
|
|
|
|
+static void sun4i_drv_traverse_endpoints(struct endpoint_list *list,
|
|
+ struct device_node *node,
|
|
+ int port_id)
|
|
+{
|
|
+ struct device_node *ep, *remote, *port;
|
|
+
|
|
+ port = of_graph_get_port_by_id(node, port_id);
|
|
+ if (!port) {
|
|
+ DRM_DEBUG_DRIVER("No output to bind on port %d\n", port_id);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ for_each_available_child_of_node(port, ep) {
|
|
+ remote = of_graph_get_remote_port_parent(ep);
|
|
+ if (!remote) {
|
|
+ DRM_DEBUG_DRIVER("Error retrieving the output node\n");
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ /*
|
|
+ * If the node is our TCON, the first port is used for
|
|
+ * panel or bridges, and will not be part of the
|
|
+ * component framework.
|
|
+ */
|
|
+ if (sun4i_drv_node_is_tcon(node)) {
|
|
+ struct of_endpoint endpoint;
|
|
+
|
|
+ if (of_graph_parse_endpoint(ep, &endpoint)) {
|
|
+ DRM_DEBUG_DRIVER("Couldn't parse endpoint\n");
|
|
+ of_node_put(remote);
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ if (!endpoint.id) {
|
|
+ DRM_DEBUG_DRIVER("Endpoint is our panel... skipping\n");
|
|
+ of_node_put(remote);
|
|
+ continue;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ kfifo_put(&list->fifo, remote);
|
|
+ }
|
|
+}
|
|
+
|
|
static int sun4i_drv_add_endpoints(struct device *dev,
|
|
struct endpoint_list *list,
|
|
struct component_match **match,
|
|
struct device_node *node)
|
|
{
|
|
- struct device_node *port, *ep, *remote;
|
|
int count = 0;
|
|
|
|
/*
|
|
@@ -272,43 +315,8 @@ static int sun4i_drv_add_endpoints(struct device *dev,
|
|
count++;
|
|
}
|
|
|
|
- /* Inputs are listed first, then outputs */
|
|
- port = of_graph_get_port_by_id(node, 1);
|
|
- if (!port) {
|
|
- DRM_DEBUG_DRIVER("No output to bind\n");
|
|
- return count;
|
|
- }
|
|
-
|
|
- for_each_available_child_of_node(port, ep) {
|
|
- remote = of_graph_get_remote_port_parent(ep);
|
|
- if (!remote) {
|
|
- DRM_DEBUG_DRIVER("Error retrieving the output node\n");
|
|
- continue;
|
|
- }
|
|
-
|
|
- /*
|
|
- * If the node is our TCON, the first port is used for
|
|
- * panel or bridges, and will not be part of the
|
|
- * component framework.
|
|
- */
|
|
- if (sun4i_drv_node_is_tcon(node)) {
|
|
- struct of_endpoint endpoint;
|
|
-
|
|
- if (of_graph_parse_endpoint(ep, &endpoint)) {
|
|
- DRM_DEBUG_DRIVER("Couldn't parse endpoint\n");
|
|
- of_node_put(remote);
|
|
- continue;
|
|
- }
|
|
-
|
|
- if (!endpoint.id) {
|
|
- DRM_DEBUG_DRIVER("Endpoint is our panel... skipping\n");
|
|
- of_node_put(remote);
|
|
- continue;
|
|
- }
|
|
- }
|
|
-
|
|
- kfifo_put(&list->fifo, remote);
|
|
- }
|
|
+ /* each node has at least one output */
|
|
+ sun4i_drv_traverse_endpoints(list, node, 1);
|
|
|
|
return count;
|
|
}
|