diff --git a/repos/pc/lib/import/import-pc_lx_emul.mk b/repos/pc/lib/import/import-pc_lx_emul.mk index 1229a4e9f5..4d804c0a09 100644 --- a/repos/pc/lib/import/import-pc_lx_emul.mk +++ b/repos/pc/lib/import/import-pc_lx_emul.mk @@ -34,6 +34,9 @@ SRC_C += lx_emul/shadow/mm/memblock.c SRC_C += lx_emul/shadow/mm/page_alloc.c SRC_C += lx_emul/shadow/mm/vmalloc.c SRC_C += lx_emul/shadow/drivers/char/random.c +SRC_C += lx_emul/shadow/drivers/clk/clk.c +SRC_C += lx_emul/shadow/drivers/clk/clkdev.c +SRC_C += lx_emul/shadow/drivers/clk/clk-devres.c SRC_C += lx_emul/shadow/drivers/pci/host-bridge.c SRC_C += lx_emul/shadow/drivers/pci/pci.c SRC_C += lx_emul/shadow/drivers/pci/pci-sysfs.c diff --git a/repos/pc/src/drivers/framebuffer/intel/pc/dep.list b/repos/pc/src/drivers/framebuffer/intel/pc/dep.list index da5932c39c..0b40fdb2e5 100644 --- a/repos/pc/src/drivers/framebuffer/intel/pc/dep.list +++ b/repos/pc/src/drivers/framebuffer/intel/pc/dep.list @@ -376,6 +376,7 @@ include/linux/anon_inodes.h include/linux/average.h include/linux/backlight.h include/linux/circ_buf.h +include/linux/clkdev.h include/linux/dma-buf.h include/linux/dma-fence-array.h include/linux/dma-fence-chain.h diff --git a/repos/pc/src/drivers/framebuffer/intel/pc/dummies.c b/repos/pc/src/drivers/framebuffer/intel/pc/dummies.c index 5c8b362b26..ebc603ac65 100644 --- a/repos/pc/src/drivers/framebuffer/intel/pc/dummies.c +++ b/repos/pc/src/drivers/framebuffer/intel/pc/dummies.c @@ -785,3 +785,38 @@ int software_node_notify(struct device * dev,unsigned long action) lx_emul_trace(__func__); return 0; } + + +#include + +int pinctrl_bind_pins(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int pinctrl_init_done(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +struct pinctrl * devm_pinctrl_get(struct device * dev) +{ + lx_emul_trace(__func__); + return (struct pinctrl*)ERR_PTR(-ENODEV); +} + + +#include + +void devm_pinctrl_put(struct pinctrl * p) +{ + lx_emul_trace(__func__); +} diff --git a/repos/pc/src/drivers/framebuffer/intel/pc/generated_dummies.c b/repos/pc/src/drivers/framebuffer/intel/pc/generated_dummies.c index 348228c9c4..71cfeb59fd 100644 --- a/repos/pc/src/drivers/framebuffer/intel/pc/generated_dummies.c +++ b/repos/pc/src/drivers/framebuffer/intel/pc/generated_dummies.c @@ -612,70 +612,6 @@ void gpiod_set_value_cansleep(struct gpio_desc * desc,int value) } -#include - -s32 i2c_smbus_read_block_data(const struct i2c_client * client,u8 command,u8 * values) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_read_byte(const struct i2c_client * client) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_read_byte_data(const struct i2c_client * client,u8 command) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_read_word_data(const struct i2c_client * client,u8 command) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_write_block_data(const struct i2c_client * client,u8 command,u8 length,const u8 * values) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_write_byte(const struct i2c_client * client,u8 value) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_write_byte_data(const struct i2c_client * client,u8 command,u8 value) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -s32 i2c_smbus_write_word_data(const struct i2c_client * client,u8 command,u16 value) -{ - lx_emul_trace_and_stop(__func__); -} - - #include s32 i2c_smbus_xfer(struct i2c_adapter * adapter,u16 addr,unsigned short flags,char read_write,u8 command,int protocol,union i2c_smbus_data * data) @@ -1841,6 +1777,38 @@ int pci_write_config_byte(const struct pci_dev * dev,int where,u8 val) } +#include + +struct pinctrl_state * pinctrl_lookup_state(struct pinctrl * p,const char * name) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int pinctrl_register_mappings(const struct pinctrl_map * maps,unsigned num_maps) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int pinctrl_select_state(struct pinctrl * p,struct pinctrl_state * state) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void pinctrl_unregister_mappings(const struct pinctrl_map * map) +{ + lx_emul_trace_and_stop(__func__); +} + + extern void ppgtt_bind_vma(struct i915_address_space * vm,struct i915_vm_pt_stash * stash,struct i915_vma_resource * vma_res,enum i915_cache_level cache_level,u32 flags); void ppgtt_bind_vma(struct i915_address_space * vm,struct i915_vm_pt_stash * stash,struct i915_vma_resource * vma_res,enum i915_cache_level cache_level,u32 flags) { diff --git a/repos/pc/src/drivers/nic/pc/dummies.c b/repos/pc/src/drivers/nic/pc/dummies.c index 269262b6f7..bfdc7e5516 100644 --- a/repos/pc/src/drivers/nic/pc/dummies.c +++ b/repos/pc/src/drivers/nic/pc/dummies.c @@ -406,3 +406,27 @@ struct gpio_desc * devm_gpiod_get_optional(struct device * dev, const char * con lx_emul_trace(__func__); return NULL; } + +#include + +struct clk *devm_clk_get_optional_enabled(struct device *dev, const char *id) +{ + return NULL; +} + +#include + +int pinctrl_bind_pins(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + +#include + +int pinctrl_init_done(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + diff --git a/repos/pc/src/drivers/usb_host/pc/dummies.c b/repos/pc/src/drivers/usb_host/pc/dummies.c index 65ae008d58..9522084238 100644 --- a/repos/pc/src/drivers/usb_host/pc/dummies.c +++ b/repos/pc/src/drivers/usb_host/pc/dummies.c @@ -243,6 +243,18 @@ int __register_chrdev(unsigned int major,unsigned int baseminor,unsigned int cou } +#include +#include + +acpi_status acpi_evaluate_object(acpi_handle handle, acpi_string pathname, + struct acpi_object_list *external_params, + struct acpi_buffer *return_buffer) +{ + lx_emul_trace(__func__); + return (AE_NOT_FOUND); +} + + #include int software_node_notify(struct device * dev,unsigned long action) @@ -250,3 +262,22 @@ int software_node_notify(struct device * dev,unsigned long action) lx_emul_trace(__func__); return 0; } + + +#include + +int pinctrl_bind_pins(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int pinctrl_init_done(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + diff --git a/repos/pc/src/include/lx_emul/initcall_order.h b/repos/pc/src/include/lx_emul/initcall_order.h index 717654ea5a..f5e8301920 100644 --- a/repos/pc/src/include/lx_emul/initcall_order.h +++ b/repos/pc/src/include/lx_emul/initcall_order.h @@ -1,7 +1,7 @@ /* * \brief Array defining order of Linux Kernel initcalls * \author Automatically generated file - do no edit - * \date 2023-10-06 + * \date 2023-11-02 */ #pragma once @@ -35,6 +35,7 @@ static const char * lx_emul_initcall_order[] = { "__initcall_init_jiffies_clocksource1", "__initcall_init_script_binfmt1", "__initcall_init_elf_binfmt1", + "__initcall_pinctrl_init1", "__initcall_gpiolib_dev_init1", "__initcall_iommu_init1", "__initcall_cpuidle_init1", @@ -111,6 +112,7 @@ static const char * lx_emul_initcall_order[] = { "__initcall_usb_init4", "__initcall_serio_init4", "__initcall_input_init4", + "__initcall_dw_i2c_init_driver4", "__initcall_power_supply_class_init4", "__initcall_leds_init4", "__initcall_efisubsys_init4", @@ -206,6 +208,7 @@ static const char * lx_emul_initcall_order[] = { "__initcall_x509_key_init6", "__initcall_blake2s_mod_init6", "__initcall_percpu_counter_startup6", + "__initcall_tgl_pinctrl_driver_init6", "__initcall_pci_proc_init6", "__initcall_ged_driver_init6", "__initcall_acpi_ac_init6", @@ -215,6 +218,7 @@ static const char * lx_emul_initcall_order[] = { "__initcall_acpi_processor_driver_init6", "__initcall_acpi_thermal_init6", "__initcall_acpi_battery_init6", + "__initcall_gpio_clk_driver_init6", "__initcall_n_null_init6", "__initcall_pty_init6", "__initcall_serial8250_init6", @@ -230,6 +234,8 @@ static const char * lx_emul_initcall_order[] = { "__initcall_i915_init6", "__initcall_topology_sysfs_init6", "__initcall_cacheinfo_sysfs_init6", + "__initcall_intel_lpss_init6", + "__initcall_intel_lpss_pci_driver_init6", "__initcall_blackhole_netdev_init6", "__initcall_phylink_init6", "__initcall_phy_module_init6", @@ -266,12 +272,17 @@ static const char * lx_emul_initcall_order[] = { "__initcall_i8042_init6", "__initcall_serport_init6", "__initcall_input_leds_init6", + "__initcall_evdev_init6", "__initcall_atkbd_init6", "__initcall_psmouse_init6", "__initcall_pkg_temp_thermal_init6", "__initcall_thermal_throttle_init_device6", "__initcall_ledtrig_audio_init6", "__initcall_esrt_sysfs_init6", + "__initcall_hid_init6", + "__initcall_hid_generic_init6", + "__initcall_mt_driver_init6", + "__initcall_i2c_hid_acpi_driver_init6", "__initcall_wmi_bmof_driver_init6", "__initcall_snd_ctl_led_init6", "__initcall_alsa_timer_init6", @@ -326,6 +337,7 @@ static const char * lx_emul_initcall_order[] = { "__initcall_regulatory_init_db7", "__initcall_pci_mmcfg_late_insert_resources7", "__initcall_acpi_gpio_handle_deferred_request_irqs7s", + "__initcall_clk_disable_unused7s", "__initcall_alsa_sound_last_init7s", "__initcall_con_initcon", "__initcall_end", diff --git a/repos/pc/src/lib/pc_wifi/dummies.c b/repos/pc/src/lib/pc_wifi/dummies.c index 5c01a6a633..68a92f20ef 100644 --- a/repos/pc/src/lib/pc_wifi/dummies.c +++ b/repos/pc/src/lib/pc_wifi/dummies.c @@ -642,3 +642,21 @@ void iwl_mvm_leds_sync(struct iwl_mvm * mvm) { lx_emul_trace(__func__); } + + +#include + +int pinctrl_bind_pins(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int pinctrl_init_done(struct device * dev) +{ + lx_emul_trace(__func__); + return 0; +} diff --git a/repos/pc/src/pc_linux/target.inc b/repos/pc/src/pc_linux/target.inc index 56994a6035..3c310700ef 100644 --- a/repos/pc/src/pc_linux/target.inc +++ b/repos/pc/src/pc_linux/target.inc @@ -55,6 +55,18 @@ LX_ENABLE += USB_PCI USB_UHCI_HCD # Intel framebuffer LX_ENABLE += DRM DRM_I915 +# required for GPIO irqchip on tigerlake +LX_ENABLE += PINCTRL PINCTRL_TIGERLAKE + +# I2C HID touchpad support (keep INPUT_EVDEV hook) +LX_ENABLE += INPUT_EVDEV HID_GENERIC HID_MULTITOUCH +LX_ENABLE += MFD_INTEL_LPSS_PCI +LX_ENABLE += I2C_DESIGNWARE_PLATFORM +LX_ENABLE += I2C I2C_HID_ACPI + +# no AML code is run that uses this feature +LX_DISABLE += ACPI_I2C_OPREGION + # to automatically set up screen mode at boot time LX_ENABLE += FB @@ -109,4 +121,4 @@ LX_DISABLE += SCHED_MC CPU_FREQ LX_DISABLE += CC_HAS_ASM_GOTO # slim down kernel by removing superfluous drivers -LX_DISABLE += HID HID_GENERIC USB_HID VGA_CONSOLE DUMMY_CONSOLE NLS VGA_ARB DEBUG_LIST +LX_DISABLE += USB_HID VGA_CONSOLE DUMMY_CONSOLE NLS VGA_ARB DEBUG_LIST