arch/x86/include/asm/intel_mid_gpadc.harch/x86/include/asm/intel_mid_hsu.harch/x86/include/asm/intel_mid_pcihelpers.harch/x86/include/asm/intel_mid_powerbtn.harch/x86/include/asm/intel_mid_pwm.harch/x86/include/asm/intel_mid_remoteproc.hINTELMIDRemoteProcessorarch/x86/include/asm/intel_mid_rpmsg.harch/x86/include/asm/intel_mid_thermal.hSoClevelpowerlimitsforthermalthrottlingintelmidthermaldriverarch/x86/include/asm/module.helif (definedCONFIG_MATOM) || (definedCONFIG_MSLM)arch/x86/include/asm/required-features.hifdefined(CONFIG_MATOM) ||defined(CONFIG_MSLM)arch/x86/include/asm/setup.hexternvoidx86_intel_mid_early_setup(void);staticinlinevoidx86_intel_mid_early_setup(void) {}arch/x86/include/uapi/asm/bootparam.harch/x86/include/uapi/asm/msr-index.harch/x86/kernel/cpu/common.carch/x86/kernel/cpu/intel.c case 0x4A: /* Merrifield */arch/x86/kernel/cpu/mcheck/therm_throt.carch/x86/kernel/early_printk.carch/x86/kernel/head32.c case X86_SUBARCH_INTEL_MID:arch/x86/kernel/irq.carch/x86/kernel/rtc.carch/x86/kernel/smpboot.carch/x86/pci/mrst.carch/x86/platform/Makefileobj-y+=intel-mid/arch/x86/platform/intel-mid/MakefileVeryImportant!arch/x86/platform/intel-mid/board.c|IntelMedfieldbasedboard (Blackbay)VeryImportant!arch/x86/platform/intel-mid/device_libs/Makefilearch/x86/platform/intel-mid/device_libs/pci/platform_sdhci_pci.c|mmcsdhcipciplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/pci/platform_sdhci_pci.harch/x86/platform/intel-mid/device_libs/pci/platform_usb_otg.c|USBOTGplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_ads7955.c|ads7955platformdatainitializationfilearch/x86/platform/intel-mid/device_libs/platform_ads7955.harch/x86/platform/intel-mid/device_libs/platform_bq24261.c|Platformdataforbq24261chargerdriverarch/x86/platform/intel-mid/device_libs/platform_bq24261.harch/x86/platform/intel-mid/device_libs/platform_emc1403.c|emc1403platformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_emc1403.harch/x86/platform/intel-mid/device_libs/platform_lis331.c|lis331platformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_lis331.harch/x86/platform/intel-mid/device_libs/platform_max3111.c|max3111platformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_max3111.harch/x86/platform/intel-mid/device_libs/platform_max7315.c|max7315platformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_max7315.harch/x86/platform/intel-mid/device_libs/platform_mid_pwm.c|mid_pwmplatformdatainitilizationfilePWM_LEDPWM_VIBRATORPWM_LCD_BACKLIGHTarch/x86/platform/intel-mid/device_libs/platform_mid_pwm.harch/x86/platform/intel-mid/device_libs/platform_mpu3050.c|mpu3050platformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_mpu3050.harch/x86/platform/intel-mid/device_libs/platform_mrfl_ocd.c|PlatformdataforMerrifieldPlatformOCDDriver+#include<asm/intel-mid.h>+#include<asm/intel_mid_remoteproc.h>+#include<asm/intel_scu_ipc.h>+#include<asm/intel_basincove_ocd.h>arch/x86/platform/intel-mid/device_libs/platform_mrfl_ocd.harch/x86/platform/intel-mid/device_libs/platform_mrfl_thermal.c|IntelMerrifieldPlatformthermaldriverarch/x86/platform/intel-mid/device_libs/platform_mrfl_thermal.harch/x86/platform/intel-mid/device_libs/platform_msic.c|MSICplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic.harch/x86/platform/intel-mid/device_libs/platform_msic_adc.c|MSICADCplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_adc.harch/x86/platform/intel-mid/device_libs/platform_msic_audio.c|MSICaudioplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_audio.harch/x86/platform/intel-mid/device_libs/platform_msic_battery.c|MSICbatteryplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_battery.harch/x86/platform/intel-mid/device_libs/platform_msic_gpio.c|MSICGPIOplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_gpio.harch/x86/platform/intel-mid/device_libs/platform_msic_ocd.c|MSICOCDplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_ocd.harch/x86/platform/intel-mid/device_libs/platform_msic_power_btn.c|MSICpowerbtnplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_power_btn.harch/x86/platform/intel-mid/device_libs/platform_msic_thermal.c|msic_thermalplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_msic_thermal.harch/x86/platform/intel-mid/device_libs/platform_pcal9555a.c|pcal9555aplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_pcal9555a.harch/x86/platform/intel-mid/device_libs/platform_pmic_gpio.c|PMICGPIOplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_pmic_gpio.harch/x86/platform/intel-mid/device_libs/platform_scu_flis.c|scu_flisplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_scu_flis.harch/x86/platform/intel-mid/device_libs/platform_sdio_regulator.c|sdioregulatorplatformdeviceinitilizationfilearch/x86/platform/intel-mid/device_libs/platform_soc_thermal.c|PlatformdataforSoCDTSdriverarch/x86/platform/intel-mid/device_libs/platform_soc_thermal.harch/x86/platform/intel-mid/device_libs/platform_spidev.c|spidevplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_spidev.harch/x86/platform/intel-mid/device_libs/platform_tc35876x.c|tc35876xplatformdatainitilizationfilearch/x86/platform/intel-mid/device_libs/platform_tc35876x.harch/x86/platform/intel-mid/device_libs/platform_tca6416.c|tca6416platformdatainitilizationfile
APIC
In computing, Intel's Advanced Programmable Interrupt Controller (APIC) is a family of interrupt controllers. As its name suggests, the APIC is more advanced than Intel's 8259 Programmable Interrupt Controller (PIC), particularly enabling the construction of multiprocessor systems. It is one of several architectural designs intended to solve interrupt routing efficiency issues in multiprocessor computer systems. Wikipedia
Langwell is the south complex of Intel Moorestown MID platform. There are eight external timers in total that can be used by the operating system. The timer information, such as frequency and addresses, is provided to the OS via SFI tables.
Timer interrupts are routed via FW/HW emulated IOAPIC independently via individual redirection table entries (RTE). Unlike HPET, there is no master counter, therefore one of the timers are used as clocksource. The overall allocation looks like:
timer 0 - NR_CPUs for per cpu timer
one timer for clocksource
one timer for watchdog driver.
It is also worth notice that APB timer does not support true one-shot mode, free-running mode will be used here to emulate one-shot mode. APB timer can also be used as broadcast timer along with per cpu local APIC timer, but by default APB timer has higher rating than local APIC timers.
The IPC is used to bridge the communications between kernel and SCU on some embedded Intel x86 platforms.
Driver for the Intel SCU IPC mechanism
SCU runing in ARC processor communicates with other entity running in IA core through IPC mechanism which in turn messaging between IA core ad SCU. SCU has two IPC mechanism IPC-1 and IPC-2. IPC-1 is used between IA32 and SCU where IPC-2 is used between P-Unit and SCU. This driver delas with IPC-1 Driver provides an API for power control unit registers (e.g. MSIC) along with other APIs.
VRTC is emulated by system controller firmware, the real HW RTC is located in the PMIC device. SCU FW shadows PMIC RTC in a memory mapped IO space that is visible to the host IA processor. This driver is based on RTC CMOS driver.
Moorestown platform doesn't have a m146818 RTC device like traditional x86 PC, but a firmware emulated virtual RTC device(vrtc), which provides some basic RTC functions like get/set time. vrtc serves as the only wall clock device on Moorestown platform.
Currently, vrtc init func will be called as arch_initcall() before xtime's init. Also move the sfi vrtc table parsing from mrst.c to vrtc.c
There will be another general vrtc driver for rtc subsystem
Intel Medfield platform has a high speed UART device, which could act as a early console. To enable early printk of HSU console, simply add "earlyprintk=hsu" in kernel command line. Currently we put the code in the early_printk_mrst.c as it is also for Intel MID platforms like the mrst early console
Upstream patch
arch/x86/include/asm/intel_mid_hsu.h
arch/x86/include/asm/mrst.h
arch/x86/kernel/early_printk.c
arch/x86/kernel/early_printk_mrst.c
include/linux/platform_data/dma-hsu.h | Changes for High Speed UART DMA
arch/x86/include/asm/bcm_bt_lpm.h drivers/misc/bcm-bt-lpm.c arch/x86/platform/intel-mid/device_libs/platform_btlpm.c | btlpm platform data initialization file Bluetooth is using UART port number 0 .name ="bcm_bt_lpm",device_initcall(bluetooth_init);
GPIO
arch/x86/include/asm/gpio.h
GPIO Keys
We will search these buttons in SFI GPIO table (by name) and register them dynamically. Please add all possible buttons here, we will shrink them if no GPIO found.