Age | Commit message (Collapse) | Author | Files | Lines |
|
Reduce size of duplicated comments by switching to use SPDX identifier.
No functional change.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
Sort headers alphabetically for better maintenance.
No functional change.
While here, remove unneeded linux/init.h inclusion.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
intel_scu_ipc_i2c_cntrl
intel_scu_ipc_i2c_cntrl() calls mutex_lock(), which indicates
this function is not called in atomic context.
Despite never getting called from atomic context,
intel_scu_ipc_i2c_cntrl() calls mdelay to busily wait.
This is not necessary and can be replaced with usleep_range to
avoid busy waiting.
This is found by a static analysis tool named DCNS written by myself.
And I also manually check it.
Signed-off-by: Jia-Ju Bai <[email protected]>
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <[email protected]>
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
A new call to SCU intel_scu_ipc_raw_command() writes SPTR and DPTR
registers before sending a command.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
For better maintainability and readability introduce a macro
for device ID table.
No functional change intended.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
The driver is bound to the devices based on their PCI IDs.
There is no need to do an additional check.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
Device pointer is used as a flag that everything is prepared.
Nevertheless the assignment happened quite before and there is a window
when a caller can get weird results or even crashes since not all fields
are initialized yet.
Rearrange initialization sequence in ->probe() to prepare everything
before use.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
Fail ->probe() if there is no platform data supplied.
Signed-off-by: Andy Shevchenko <[email protected]>
|
|
The Kconfig currently controlling compilation of this code is:
drivers/platform/x86/Kconfig:config INTEL_SCU_IPC
drivers/platform/x86/Kconfig: bool "Intel SCU IPC Support"
...meaning that it currently is not being built as a module by anyone.
Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.
We explicitly disallow a driver unbind, since that doesn't have a
sensible use case anyway, and it allows us to drop the ".remove"
code for non-modular drivers.
Since module_pci_driver() uses the same init level priority as
builtin_pci_driver() the init ordering remains unchanged with
this commit.
Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
We don't replace module.h with init.h since the file already has that.
We also delete the MODULE_LICENSE tag etc. since all that information
is already contained at the top of the file in the comments.
Cc: [email protected]
Signed-off-by: Paul Gortmaker <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
Protect the dev member assignment in ->remove() since user may potentially call
unbind from a sysfs even if the driver is built-in. The latter might be racy
with ongoing SCU communication.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
Eliminate some boilerplate code by using module_pci_driver() instead of
init/exit, moving the salient bits from init into probe.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
Switch the code to use struct device * instead of struct pci_dev * since there
is no reason to access PCI related features in the driver.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
As much as possible propagate a pointer to struct intel_scu_ipc_dev.
There is no functional change.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
The error handling is broken right now since it leaves resources unfreed.
Convert the code to use managed resources to fix the error handling.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
'{ }' and memset will both reset the cbuf buffer.
Only once is enough and this can be done outside fo the mutex.
Signed-off-by: Christophe JAILLET <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
Read the resources from PCI BAR0 instead of using hardcoded values.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
This is small performance optimization of the busy_loop().
While here, use BIT() macro instead of plain integers when check the status.
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
While here, do couple of amendments:
- move platform variable to the function where it's used
- define intel_scu_ipc_check_status() static
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
|
|
We should prefer `struct pci_device_id` over `DEFINE_PCI_DEVICE_TABLE` to
meet kernel coding style guidelines. This issue was reported by checkpatch.
A simplified version of the semantic patch that makes this change is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@@
identifier i;
declarer name DEFINE_PCI_DEVICE_TABLE;
initializer z;
@@
- DEFINE_PCI_DEVICE_TABLE(i)
+ const struct pci_device_id i[]
= z;
// </smpl>
[bhelgaas: add semantic patch]
Signed-off-by: Benoit Taine <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
|
|
For readability matters, this patch replaces the hardcoded pci ids by
human readable macros.
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
This patch removes the unnecessary enum for platform type to handle the
array of pdatas. We can set pdata directly to pci_device_id struct
instead.
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
This patch adds support for ipc command interrupt mode.
Also added platform data option to select 'irq_mode'
irq_mode = 1: configure the driver to receive IOC interrupt
for each successful ipc_command.
irq_mode = 0: makes driver use polling method to
track the command completion status.
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Handle error conditions in intel_scu_ipc_command() and
pwr_reg_rdwr().
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Enabled ipc support for penwell, clovertrail & tangier platforms.
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Cc: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Since the same ipc driver can be used by many platforms, using
macros for defining ipc_base and i2c_base addresses is not
a scalable approach. So added a platform data structure to pass
this information.
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Acked-by: Alan Cox <[email protected]>
Cc: David Cohen <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
mrst is used as common name to represent all intel_mid type
soc's. But moorsetwon is just one of the intel_mid soc. So
renamed them to use intel_mid.
This patch mainly renames the variables and related
functions that uses *mrst* prefix with *intel_mid*.
To ensure that there are no functional changes, I have compared
the objdump of related files before and after rename and found
the only difference is symbol and name changes.
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
|
|
Following files contains code that is common to all intel mid
soc's. So renamed them as below.
mrst/mrst.c -> intel-mid/intel-mid.c
mrst/vrtc.c -> intel-mid/intel_mid_vrtc.c
mrst/early_printk_mrst.c -> intel-mid/intel_mid_vrtc.c
pci/mrst.c -> pci/intel_mid_pci.c
Also, renamed the corresponding header files and made changes
to the driver files that included these header files.
To ensure that there are no functional changes, I have compared
the objdump of renamed files before and after rename and found
that the only difference is file name change.
Signed-off-by: Kuppuswamy Sathyanarayanan <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: David Cohen <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
|
|
All the production devices use the PC compatible version of this
device so don't use the SCU interfaces or the SCU firmware
interfaces.
Delete lots of code and conditional paths
Signed-off-by: Alan Cox <[email protected]>
Acked-by: H. Peter Anvin <[email protected]>
Cc: Matthew Garrett <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
|
|
The sysdev.h file should not be needed by any in-kernel code, so remove
the .h file from these random files that seem to still want to include
it.
The sysdev code will be going away soon, so this include needs to be
removed no matter what.
Cc: Jiandong Zheng <[email protected]>
Cc: Scott Branden <[email protected]>
Cc: Russell King <[email protected]>
Cc: Kukjin Kim <[email protected]>
Cc: David Brown <[email protected]>
Cc: Daniel Walker <[email protected]>
Cc: Bryan Huntsman <[email protected]>
Cc: Ben Dooks <[email protected]>
Cc: Wan ZongShun <[email protected]>
Cc: Haavard Skinnemoen <[email protected]>
Cc: Hans-Christian Egtvedt <[email protected]>
Cc: Guan Xuetao <[email protected]>
Cc: "Venkatesh Pallipadi
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Grant Likely <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Matthew Garrett <[email protected]>
Signed-off-by: Kay Sievers <[email protected]>
|
|
These files aren't just exporting symbols -- they are also defining
a MODULE_LICENSE etc. so give them the full module.h file.
Signed-off-by: Paul Gortmaker <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Signed-off-by: Lucas De Marchi <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Remove duplicated #include('s) in
drivers/platform/x86/intel_scu_ipc.c
Signed-off-by: Huang Weiyi <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
|
|
busy_loop() returns negative error code, thus change err variable
from u32 to int to properly propagate correct error code.
Also remove unneeded initialization for err and i variables.
Signed-off-by: Axel Lin <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
|
|
This driver implements ioctl and interfaces with intel scu ipc driver. It
is used to access pmic/msic registers from user space and firmware update
utility.
Signed-off-by: Sreedhara DS <[email protected]>
[Extensive clean up and debug]
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
SFI provides a series of tables. These describe the platform devices present
including SPI and I²C devices, as well as various sensors, keypads and other
glue as well as interfaces provided via the SCU IPC mechanism (intel_scu_ipc.c)
This patch is a merge of the core elements and relevant fixes from the
Intel development code by Feng, Alek, myself into a single coherent patch
for upstream submission.
It provides the needed infrastructure to register I2C, SPI and platform devices
described by the tables, as well as handlers for some of the hardware already
supported in kernel. The 0.8 firmware also provides GPIO tables.
Devices are created at boot time or if they are SCU dependant at the point an
SCU is discovered. The existing Linux device mechanisms will then handle the
device binding. At an abstract level this is an SFI to Linux device translator.
Device/platform specific setup/glue is in this file. This is done so that the
drivers for the generic I²C and SPI bus devices remain cross platform as they
should.
(Updated from RFC version to correct the emc1403 name used by the firmware
and a wrongly used #define)
Signed-off-by: Alek Du <[email protected]>
LKML-Reference: <[email protected]>
[Clean ups, removal of 0.7 support]
Signed-off-by: Feng Tang <[email protected]>
[Clean ups]
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
|
|
We need to include the SFI headers. This is fine as the SCU is only
relevant to x86 platforms with SFI.
Fixes the -next warning report.
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
We should pass the data to the data register.
Signed-off-by: Jianwei Yang <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
|
|
Size for PMIC read/write command is byte, while it is DWORD for other
IPC commands.
Signed-off-by: Hong Liu <[email protected]>
Signed-off-by: ALan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Signed-off-by: Hong Liu <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Data is 2-byte per entry for PMIC read-modify-update command.
Signed-off-by: Hong Liu <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Don't pass more bytes in the command length field than we filled.
Signed-off-by: Andy Ross <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
some messages take 4 bytes, but only fill 3 bytes....
this patch makes sure that whatever we send to the SCU is zeroed first
Signed-off-by: Arjan van de Ven <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
The stack buffer for IPC messages was 16 bytes, limiting messages to a
size of 4 (each message is 32 bit).
However, the touch screen driver is trying to send messages of size 5....
(AC: Set to 20 bytes having checked the max size allowed)
Signed-off-by: Arjan van de Ven <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
This provides an architecture level board identify function to replace the
cpuid direct usage
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Delete unused constants IPC_CMD_INDIRECT_RD and IPC_CMD_INDIRECT_WR
Remove multiple inclusion of header file "asm/mrst.h"
Signed-off-by: Sreedhara DS <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
The firmware of production devices does not support this interface so this
is dead code.
Signed-off-by: Sreedhara DS <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Changes to work on bothMmoorestown and Medfield
New pci id added for Medfield
Return type of ipc_data_readl chnaged from u8 to u32
Signed-off-by: Sreedhara DS <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|
|
Intel SCU message formats depend upon the processor type. Replace the
module option with automatic detection of the processor type.
Signed-off-by: Sreedhara DS <[email protected]>
Signed-off-by: Matthew Garrett <[email protected]>
|