mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 05:37:54 +00:00
parent
0c5d8f1156
commit
daa6195732
@ -763,3 +763,15 @@ int request_firmware_direct(const struct firmware ** firmware_p,const char * nam
|
|||||||
lx_emul_trace(__func__);
|
lx_emul_trace(__func__);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ___ratelimit(struct ratelimit_state * rs, const char * func)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* from lib/ratelimit.c:
|
||||||
|
* " 0 means callbacks will be suppressed.
|
||||||
|
* 1 means go ahead and do it. "
|
||||||
|
*/
|
||||||
|
lx_emul_trace(__func__);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
@ -16,14 +16,6 @@ void * PDE_DATA(const struct inode * inode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#include <linux/ratelimit_types.h>
|
|
||||||
|
|
||||||
int ___ratelimit(struct ratelimit_state * rs,const char * func)
|
|
||||||
{
|
|
||||||
lx_emul_trace_and_stop(__func__);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
|
|
||||||
struct sk_buff * __alloc_skb(unsigned int size,gfp_t gfp_mask,int flags,int node)
|
struct sk_buff * __alloc_skb(unsigned int size,gfp_t gfp_mask,int flags,int node)
|
||||||
|
@ -375,7 +375,14 @@ void intel_vgpu_detect(struct drm_i915_private * dev_priv)
|
|||||||
|
|
||||||
void call_rcu(struct rcu_head * head, rcu_callback_t func)
|
void call_rcu(struct rcu_head * head, rcu_callback_t func)
|
||||||
{
|
{
|
||||||
|
enum { KVFREE_RCU_OFFSET = 4096 };
|
||||||
|
|
||||||
lx_emul_trace(__func__);
|
lx_emul_trace(__func__);
|
||||||
|
|
||||||
|
if (func < (rcu_callback_t)KVFREE_RCU_OFFSET) {
|
||||||
|
kvfree((void*)head - (unsigned long)func);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
func(head);
|
func(head);
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ static bool reconfigure(void * data)
|
|||||||
unsigned err = 0;
|
unsigned err = 0;
|
||||||
struct drm_fb_helper_surface_size sizes = {};
|
struct drm_fb_helper_surface_size sizes = {};
|
||||||
|
|
||||||
sizes.surface_depth = 32;
|
sizes.surface_depth = 24;
|
||||||
sizes.surface_bpp = 32;
|
sizes.surface_bpp = 32;
|
||||||
sizes.fb_width = mode_preferred.hdisplay;
|
sizes.fb_width = mode_preferred.hdisplay;
|
||||||
sizes.fb_height = mode_preferred.vdisplay;
|
sizes.fb_height = mode_preferred.vdisplay;
|
||||||
@ -335,6 +335,16 @@ void lx_user_init(void)
|
|||||||
|
|
||||||
static int genode_fb_client_hotplug(struct drm_client_dev *client)
|
static int genode_fb_client_hotplug(struct drm_client_dev *client)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Set deferred_setup to execute codepath of drm_fb_helper_hotplug_event()
|
||||||
|
* on next connector state change that does not drop modes, which are
|
||||||
|
* above the current framebuffer resolution. It is required if the
|
||||||
|
* connected display at runtime is larger than the ones attached already
|
||||||
|
* during boot. Without this quirk, not all modes are reported on displays
|
||||||
|
* connected after boot.
|
||||||
|
*/
|
||||||
|
i915_fb()->deferred_setup = true;
|
||||||
|
|
||||||
lx_emul_i915_hotplug_connector(client);
|
lx_emul_i915_hotplug_connector(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -353,7 +363,7 @@ void lx_emul_i915_report(void * lx_data, void * genode_data)
|
|||||||
drm_client_for_each_connector_iter(connector, &conn_iter) {
|
drm_client_for_each_connector_iter(connector, &conn_iter) {
|
||||||
lx_emul_i915_report_connector(connector, genode_data,
|
lx_emul_i915_report_connector(connector, genode_data,
|
||||||
connector->name,
|
connector->name,
|
||||||
!!connector->encoder /* connected */,
|
connector->status != connector_status_disconnected,
|
||||||
get_brightness(connector, INVALID_BRIGHTNESS));
|
get_brightness(connector, INVALID_BRIGHTNESS));
|
||||||
}
|
}
|
||||||
drm_connector_list_iter_end(&conn_iter);
|
drm_connector_list_iter_end(&conn_iter);
|
||||||
|
Loading…
Reference in New Issue
Block a user