The header file is the only thing preventing us from building the
driver in a cross-platform configuration, so move the structure
we are interested in to the global platform_data location
and enable compile testing.
Signed-off-by: Arnd Bergmann <[email protected]>
---
arch/arm/mach-ep93xx/include/mach/platform.h | 7 +------
drivers/net/ethernet/cirrus/Kconfig | 2 +-
drivers/net/ethernet/cirrus/ep93xx_eth.c | 2 +-
include/linux/platform_data/eth-ep93xx.h | 10 ++++++++++
4 files changed, 13 insertions(+), 8 deletions(-)
create mode 100644 include/linux/platform_data/eth-ep93xx.h
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index 6c41c794bed5..43446f33c2be 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -5,6 +5,7 @@
#ifndef __ASSEMBLY__
+#include <linux/platform_data/eth-ep93xx.h>
#include <linux/reboot.h>
struct device;
@@ -15,12 +16,6 @@ struct ep93xxfb_mach_info;
struct ep93xx_keypad_platform_data;
struct ep93xx_spi_info;
-struct ep93xx_eth_data
-{
- unsigned char dev_addr[6];
- unsigned char phy_id;
-};
-
void ep93xx_map_io(void);
void ep93xx_init_irq(void);
diff --git a/drivers/net/ethernet/cirrus/Kconfig b/drivers/net/ethernet/cirrus/Kconfig
index e9a0213b08c4..6238e6951336 100644
--- a/drivers/net/ethernet/cirrus/Kconfig
+++ b/drivers/net/ethernet/cirrus/Kconfig
@@ -41,7 +41,7 @@ config CS89x0_PLATFORM
config EP93XX_ETH
tristate "EP93xx Ethernet support"
- depends on ARM && ARCH_EP93XX
+ depends on (ARM && ARCH_EP93XX) || COMPILE_TEST
select MII
help
This is a driver for the ethernet hardware included in EP93xx CPUs.
diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
index 13dfdfca49fc..a6da9873570b 100644
--- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
+++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
@@ -25,7 +25,7 @@
#include <linux/io.h>
#include <linux/slab.h>
-#include <mach/hardware.h>
+#include <linux/platform_data/eth-ep93xx.h>
#define DRV_MODULE_NAME "ep93xx-eth"
#define DRV_MODULE_VERSION "0.1"
diff --git a/include/linux/platform_data/eth-ep93xx.h b/include/linux/platform_data/eth-ep93xx.h
new file mode 100644
index 000000000000..8eef637a804d
--- /dev/null
+++ b/include/linux/platform_data/eth-ep93xx.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_PLATFORM_DATA_ETH_EP93XX
+#define _LINUX_PLATFORM_DATA_ETH_EP93XX
+
+struct ep93xx_eth_data {
+ unsigned char dev_addr[6];
+ unsigned char phy_id;
+};
+
+#endif
--
2.20.0
ep93xx does not have a proper pinctrl driver, but does things
ad-hoc through mach/platform.h, which is also used for setting
up the boards.
To avoid using mach/*.h headers completely, let's move the interfaces
into include/linux/soc/. This is far from great, but gets the job
done here, without the need for a proper pinctrl driver.
Signed-off-by: Arnd Bergmann <[email protected]>
---
arch/arm/mach-ep93xx/clock.c | 1 +
arch/arm/mach-ep93xx/core.c | 2 ++
arch/arm/mach-ep93xx/include/mach/platform.h | 16 ---------
drivers/ata/pata_ep93xx.c | 2 +-
drivers/input/keyboard/ep93xx_keypad.c | 3 +-
drivers/pwm/pwm-ep93xx.c | 2 +-
include/linux/soc/cirrus/ep93xx.h | 37 ++++++++++++++++++++
sound/soc/cirrus/edb93xx.c | 2 +-
sound/soc/cirrus/ep93xx-ac97.c | 1 +
sound/soc/cirrus/ep93xx-i2s.c | 3 +-
sound/soc/cirrus/simone.c | 2 +-
sound/soc/cirrus/snappercl15.c | 2 +-
12 files changed, 48 insertions(+), 25 deletions(-)
create mode 100644 include/linux/soc/cirrus/ep93xx.h
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
index d2eee707d27f..9f43362eb62d 100644
--- a/arch/arm/mach-ep93xx/clock.c
+++ b/arch/arm/mach-ep93xx/clock.c
@@ -20,6 +20,7 @@
#include <linux/io.h>
#include <linux/spinlock.h>
#include <linux/clkdev.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 706515faee06..3d245668846d 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -43,6 +43,8 @@
#include <linux/platform_data/video-ep93xx.h>
#include <linux/platform_data/keypad-ep93xx.h>
#include <linux/platform_data/spi-ep93xx.h>
+#include <linux/soc/cirrus/ep93xx.h>
+
#include <mach/gpio-ep93xx.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index 43446f33c2be..b4045a186239 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -19,14 +19,6 @@ struct ep93xx_spi_info;
void ep93xx_map_io(void);
void ep93xx_init_irq(void);
-#define EP93XX_CHIP_REV_D0 3
-#define EP93XX_CHIP_REV_D1 4
-#define EP93XX_CHIP_REV_E0 5
-#define EP93XX_CHIP_REV_E1 6
-#define EP93XX_CHIP_REV_E2 7
-
-unsigned int ep93xx_chip_revision(void);
-
void ep93xx_register_flash(unsigned int width,
resource_size_t start, resource_size_t size);
@@ -36,19 +28,11 @@ void ep93xx_register_spi(struct ep93xx_spi_info *info,
struct spi_board_info *devices, int num);
void ep93xx_register_fb(struct ep93xxfb_mach_info *data);
void ep93xx_register_pwm(int pwm0, int pwm1);
-int ep93xx_pwm_acquire_gpio(struct platform_device *pdev);
-void ep93xx_pwm_release_gpio(struct platform_device *pdev);
void ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data);
-int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
-void ep93xx_keypad_release_gpio(struct platform_device *pdev);
void ep93xx_register_i2s(void);
-int ep93xx_i2s_acquire(void);
-void ep93xx_i2s_release(void);
void ep93xx_register_ac97(void);
void ep93xx_register_ide(void);
void ep93xx_register_adc(void);
-int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
-void ep93xx_ide_release_gpio(struct platform_device *pdev);
struct device *ep93xx_init_devices(void);
extern void ep93xx_timer_init(void);
diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c
index cc6d06c1b2c7..db271b705529 100644
--- a/drivers/ata/pata_ep93xx.c
+++ b/drivers/ata/pata_ep93xx.c
@@ -44,7 +44,7 @@
#include <linux/ktime.h>
#include <linux/platform_data/dma-ep93xx.h>
-#include <mach/platform.h>
+#include <linux/soc/cirrus/ep93xx.h>
#define DRV_NAME "ep93xx-ide"
#define DRV_VERSION "1.0"
diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c
index 71472f6257c0..575dac52f7b4 100644
--- a/drivers/input/keyboard/ep93xx_keypad.c
+++ b/drivers/input/keyboard/ep93xx_keypad.c
@@ -27,8 +27,7 @@
#include <linux/io.h>
#include <linux/input/matrix_keypad.h>
#include <linux/slab.h>
-
-#include <mach/hardware.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include <linux/platform_data/keypad-ep93xx.h>
/*
diff --git a/drivers/pwm/pwm-ep93xx.c b/drivers/pwm/pwm-ep93xx.c
index bbf10ae02f0e..fa168581e6b8 100644
--- a/drivers/pwm/pwm-ep93xx.c
+++ b/drivers/pwm/pwm-ep93xx.c
@@ -35,7 +35,7 @@
#include <asm/div64.h>
-#include <mach/platform.h> /* for ep93xx_pwm_{acquire,release}_gpio() */
+#include <linux/soc/cirrus/ep93xx.h> /* for ep93xx_pwm_{acquire,release}_gpio() */
#define EP93XX_PWMx_TERM_COUNT 0x00
#define EP93XX_PWMx_DUTY_CYCLE 0x04
diff --git a/include/linux/soc/cirrus/ep93xx.h b/include/linux/soc/cirrus/ep93xx.h
new file mode 100644
index 000000000000..56fbe2dc59b1
--- /dev/null
+++ b/include/linux/soc/cirrus/ep93xx.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _SOC_EP93XX_H
+#define _SOC_EP93XX_H
+
+struct platform_device;
+
+#define EP93XX_CHIP_REV_D0 3
+#define EP93XX_CHIP_REV_D1 4
+#define EP93XX_CHIP_REV_E0 5
+#define EP93XX_CHIP_REV_E1 6
+#define EP93XX_CHIP_REV_E2 7
+
+#ifdef CONFIG_ARCH_EP93XX
+int ep93xx_pwm_acquire_gpio(struct platform_device *pdev);
+void ep93xx_pwm_release_gpio(struct platform_device *pdev);
+int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
+void ep93xx_ide_release_gpio(struct platform_device *pdev);
+int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
+void ep93xx_keypad_release_gpio(struct platform_device *pdev);
+int ep93xx_i2s_acquire(void);
+void ep93xx_i2s_release(void);
+unsigned int ep93xx_chip_revision(void);
+
+#else
+static inline int ep93xx_pwm_acquire_gpio(struct platform_device *pdev) { return 0; }
+static inline void ep93xx_pwm_release_gpio(struct platform_device *pdev) {}
+static inline int ep93xx_ide_acquire_gpio(struct platform_device *pdev) { return 0; }
+static inline void ep93xx_ide_release_gpio(struct platform_device *pdev) {}
+static inline int ep93xx_keypad_acquire_gpio(struct platform_device *pdev) { return 0; }
+static inline void ep93xx_keypad_release_gpio(struct platform_device *pdev) {}
+static inline int ep93xx_i2s_acquire(void) { return 0; }
+static inline void ep93xx_i2s_release(void) {}
+static inline unsigned int ep93xx_chip_revision(void) { return 0; }
+
+#endif
+
+#endif
diff --git a/sound/soc/cirrus/edb93xx.c b/sound/soc/cirrus/edb93xx.c
index 3d011abaa266..f678b4c1514a 100644
--- a/sound/soc/cirrus/edb93xx.c
+++ b/sound/soc/cirrus/edb93xx.c
@@ -22,11 +22,11 @@
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/module.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <asm/mach-types.h>
-#include <mach/hardware.h>
static int edb93xx_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
diff --git a/sound/soc/cirrus/ep93xx-ac97.c b/sound/soc/cirrus/ep93xx-ac97.c
index cd5a939ad608..c6bc447429af 100644
--- a/sound/soc/cirrus/ep93xx-ac97.c
+++ b/sound/soc/cirrus/ep93xx-ac97.c
@@ -24,6 +24,7 @@
#include <sound/soc.h>
#include <linux/platform_data/dma-ep93xx.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include "ep93xx-pcm.h"
diff --git a/sound/soc/cirrus/ep93xx-i2s.c b/sound/soc/cirrus/ep93xx-i2s.c
index 0918c5da575a..beab7c516855 100644
--- a/sound/soc/cirrus/ep93xx-i2s.c
+++ b/sound/soc/cirrus/ep93xx-i2s.c
@@ -27,9 +27,8 @@
#include <sound/initval.h>
#include <sound/soc.h>
-#include <mach/hardware.h>
-#include <mach/ep93xx-regs.h>
#include <linux/platform_data/dma-ep93xx.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include "ep93xx-pcm.h"
diff --git a/sound/soc/cirrus/simone.c b/sound/soc/cirrus/simone.c
index 1ec661834e5a..cb850530331b 100644
--- a/sound/soc/cirrus/simone.c
+++ b/sound/soc/cirrus/simone.c
@@ -13,13 +13,13 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <asm/mach-types.h>
-#include <mach/hardware.h>
static struct snd_soc_dai_link simone_dai = {
.name = "AC97",
diff --git a/sound/soc/cirrus/snappercl15.c b/sound/soc/cirrus/snappercl15.c
index 11ff7b2672b2..dea4909154c8 100644
--- a/sound/soc/cirrus/snappercl15.c
+++ b/sound/soc/cirrus/snappercl15.c
@@ -13,12 +13,12 @@
#include <linux/platform_device.h>
#include <linux/module.h>
+#include <linux/soc/cirrus/ep93xx.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <asm/mach-types.h>
-#include <mach/hardware.h>
#include "../codecs/tlv320aic23.h"
--
2.20.0
gpio-ep93xx.h, hardware.h, and platform.h are only used in
arch/arm/mach-ep93xx, so we can move them one there and no
longer expose them to device drivers.
Signed-off-by: Arnd Bergmann <[email protected]>
---
arch/arm/mach-ep93xx/adssphere.c | 2 +-
arch/arm/mach-ep93xx/clock.c | 2 +-
arch/arm/mach-ep93xx/core.c | 6 +++---
arch/arm/mach-ep93xx/dma.c | 2 +-
arch/arm/mach-ep93xx/edb93xx.c | 4 ++--
arch/arm/mach-ep93xx/gesbc9312.c | 2 +-
arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h | 0
arch/arm/mach-ep93xx/{include/mach => }/hardware.h | 2 +-
arch/arm/mach-ep93xx/micro9.c | 2 +-
arch/arm/mach-ep93xx/{include/mach => }/platform.h | 0
arch/arm/mach-ep93xx/simone.c | 4 ++--
arch/arm/mach-ep93xx/snappercl15.c | 4 ++--
arch/arm/mach-ep93xx/ts72xx.c | 4 ++--
arch/arm/mach-ep93xx/vision_ep9307.c | 4 ++--
14 files changed, 19 insertions(+), 19 deletions(-)
rename arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h (100%)
rename arch/arm/mach-ep93xx/{include/mach => }/hardware.h (96%)
rename arch/arm/mach-ep93xx/{include/mach => }/platform.h (100%)
diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c
index bda6c3a5c923..5d3a3e302012 100644
--- a/arch/arm/mach-ep93xx/adssphere.c
+++ b/arch/arm/mach-ep93xx/adssphere.c
@@ -15,7 +15,7 @@
#include <linux/platform_device.h>
#include <linux/sizes.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
index 9f43362eb62d..b9f523d9dc8c 100644
--- a/arch/arm/mach-ep93xx/clock.c
+++ b/arch/arm/mach-ep93xx/clock.c
@@ -22,7 +22,7 @@
#include <linux/clkdev.h>
#include <linux/soc/cirrus/ep93xx.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <asm/div64.h>
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 3d245668846d..cc1382f879af 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -39,13 +39,13 @@
#include <linux/usb/ohci_pdriver.h>
#include <linux/random.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <linux/platform_data/video-ep93xx.h>
#include <linux/platform_data/keypad-ep93xx.h>
#include <linux/platform_data/spi-ep93xx.h>
#include <linux/soc/cirrus/ep93xx.h>
-#include <mach/gpio-ep93xx.h>
+#include "gpio-ep93xx.h"
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -125,7 +125,7 @@ void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits)
/**
* ep93xx_chip_revision() - returns the EP93xx chip revision
*
- * See <mach/platform.h> for more information.
+ * See "platform.h" for more information.
*/
unsigned int ep93xx_chip_revision(void)
{
diff --git a/arch/arm/mach-ep93xx/dma.c b/arch/arm/mach-ep93xx/dma.c
index 88a4c9b089a5..821427107b11 100644
--- a/arch/arm/mach-ep93xx/dma.c
+++ b/arch/arm/mach-ep93xx/dma.c
@@ -26,7 +26,7 @@
#include <linux/platform_device.h>
#include <linux/platform_data/dma-ep93xx.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include "soc.h"
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c
index 8e89ec8b6f0f..d96dd014dd23 100644
--- a/arch/arm/mach-ep93xx/edb93xx.c
+++ b/arch/arm/mach-ep93xx/edb93xx.c
@@ -32,10 +32,10 @@
#include <sound/cs4271.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <linux/platform_data/video-ep93xx.h>
#include <linux/platform_data/spi-ep93xx.h>
-#include <mach/gpio-ep93xx.h>
+#include "gpio-ep93xx.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c
index 0cca5b183309..ac48e3476587 100644
--- a/arch/arm/mach-ep93xx/gesbc9312.c
+++ b/arch/arm/mach-ep93xx/gesbc9312.c
@@ -15,7 +15,7 @@
#include <linux/platform_device.h>
#include <linux/sizes.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h b/arch/arm/mach-ep93xx/gpio-ep93xx.h
similarity index 100%
rename from arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
rename to arch/arm/mach-ep93xx/gpio-ep93xx.h
diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/hardware.h
similarity index 96%
rename from arch/arm/mach-ep93xx/include/mach/hardware.h
rename to arch/arm/mach-ep93xx/hardware.h
index 8938906e780a..e7d850e04782 100644
--- a/arch/arm/mach-ep93xx/include/mach/hardware.h
+++ b/arch/arm/mach-ep93xx/hardware.h
@@ -6,7 +6,7 @@
#ifndef __ASM_ARCH_HARDWARE_H
#define __ASM_ARCH_HARDWARE_H
-#include <mach/platform.h>
+#include "platform.h"
/*
* The EP93xx has two external crystal oscillators. To generate the
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c
index 373583c29825..c7f64e4ff6c7 100644
--- a/arch/arm/mach-ep93xx/micro9.c
+++ b/arch/arm/mach-ep93xx/micro9.c
@@ -16,7 +16,7 @@
#include <linux/platform_device.h>
#include <linux/io.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/platform.h
similarity index 100%
rename from arch/arm/mach-ep93xx/include/mach/platform.h
rename to arch/arm/mach-ep93xx/platform.h
diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c
index 80ccb984d521..adc17289cc23 100644
--- a/arch/arm/mach-ep93xx/simone.c
+++ b/arch/arm/mach-ep93xx/simone.c
@@ -27,8 +27,8 @@
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
-#include <mach/hardware.h>
-#include <mach/gpio-ep93xx.h>
+#include "hardware.h"
+#include "gpio-ep93xx.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c
index cf0cb58b3454..f8f89551dbed 100644
--- a/arch/arm/mach-ep93xx/snappercl15.c
+++ b/arch/arm/mach-ep93xx/snappercl15.c
@@ -25,9 +25,9 @@
#include <linux/mtd/platnand.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <linux/platform_data/video-ep93xx.h>
-#include <mach/gpio-ep93xx.h>
+#include "gpio-ep93xx.h"
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c
index 85b74ac943f0..bba6aa5d7106 100644
--- a/arch/arm/mach-ep93xx/ts72xx.c
+++ b/arch/arm/mach-ep93xx/ts72xx.c
@@ -23,8 +23,8 @@
#include <linux/mmc/host.h>
#include <linux/platform_data/spi-ep93xx.h>
-#include <mach/gpio-ep93xx.h>
-#include <mach/hardware.h>
+#include "gpio-ep93xx.h"
+#include "hardware.h"
#include <mach/irqs.h>
#include <asm/mach-types.h>
diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c b/arch/arm/mach-ep93xx/vision_ep9307.c
index 767ee64628dc..66e2b34aa779 100644
--- a/arch/arm/mach-ep93xx/vision_ep9307.c
+++ b/arch/arm/mach-ep93xx/vision_ep9307.c
@@ -31,10 +31,10 @@
#include <sound/cs4271.h>
-#include <mach/hardware.h>
+#include "hardware.h"
#include <linux/platform_data/video-ep93xx.h>
#include <linux/platform_data/spi-ep93xx.h>
-#include <mach/gpio-ep93xx.h>
+#include "gpio-ep93xx.h"
#include <asm/mach-types.h>
#include <asm/mach/map.h>
--
2.20.0
Hi Arnd,
On 15/04/2019 21:25, Arnd Bergmann wrote:
> The header file is the only thing preventing us from building the
> driver in a cross-platform configuration, so move the structure
> we are interested in to the global platform_data location
> and enable compile testing.
Acked-by: Alexander Sverdlin <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-ep93xx/include/mach/platform.h | 7 +------
> drivers/net/ethernet/cirrus/Kconfig | 2 +-
> drivers/net/ethernet/cirrus/ep93xx_eth.c | 2 +-
> include/linux/platform_data/eth-ep93xx.h | 10 ++++++++++
> 4 files changed, 13 insertions(+), 8 deletions(-)
> create mode 100644 include/linux/platform_data/eth-ep93xx.h
>
> diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
> index 6c41c794bed5..43446f33c2be 100644
> --- a/arch/arm/mach-ep93xx/include/mach/platform.h
> +++ b/arch/arm/mach-ep93xx/include/mach/platform.h
> @@ -5,6 +5,7 @@
>
> #ifndef __ASSEMBLY__
>
> +#include <linux/platform_data/eth-ep93xx.h>
> #include <linux/reboot.h>
>
> struct device;
> @@ -15,12 +16,6 @@ struct ep93xxfb_mach_info;
> struct ep93xx_keypad_platform_data;
> struct ep93xx_spi_info;
>
> -struct ep93xx_eth_data
> -{
> - unsigned char dev_addr[6];
> - unsigned char phy_id;
> -};
> -
> void ep93xx_map_io(void);
> void ep93xx_init_irq(void);
>
> diff --git a/drivers/net/ethernet/cirrus/Kconfig b/drivers/net/ethernet/cirrus/Kconfig
> index e9a0213b08c4..6238e6951336 100644
> --- a/drivers/net/ethernet/cirrus/Kconfig
> +++ b/drivers/net/ethernet/cirrus/Kconfig
> @@ -41,7 +41,7 @@ config CS89x0_PLATFORM
>
> config EP93XX_ETH
> tristate "EP93xx Ethernet support"
> - depends on ARM && ARCH_EP93XX
> + depends on (ARM && ARCH_EP93XX) || COMPILE_TEST
> select MII
> help
> This is a driver for the ethernet hardware included in EP93xx CPUs.
> diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> index 13dfdfca49fc..a6da9873570b 100644
> --- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
> +++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> @@ -25,7 +25,7 @@
> #include <linux/io.h>
> #include <linux/slab.h>
>
> -#include <mach/hardware.h>
> +#include <linux/platform_data/eth-ep93xx.h>
>
> #define DRV_MODULE_NAME "ep93xx-eth"
> #define DRV_MODULE_VERSION "0.1"
> diff --git a/include/linux/platform_data/eth-ep93xx.h b/include/linux/platform_data/eth-ep93xx.h
> new file mode 100644
> index 000000000000..8eef637a804d
> --- /dev/null
> +++ b/include/linux/platform_data/eth-ep93xx.h
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _LINUX_PLATFORM_DATA_ETH_EP93XX
> +#define _LINUX_PLATFORM_DATA_ETH_EP93XX
> +
> +struct ep93xx_eth_data {
> + unsigned char dev_addr[6];
> + unsigned char phy_id;
> +};
> +
> +#endif
>
On Monday, April 15, 2019 12:25 PM, Arnd Bergmann wrote:
> We can communicate the clock rate using platform data rather than setting a
> flag to use a particular value in the driver, which is cleaner and avoids the dependency.
>
> No platform in the kernel currently defines the ep93xx keypad device structure, so this
> is a rather pointless excercise. Any out of tree users are probably dead now, but if not,
> they have to change their platform code to match the new platform_data structure.
<snip>
> diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
> index 0e36818e3680..3054fced8509 100644
> --- a/include/linux/platform_data/keypad-ep93xx.h
> +++ b/include/linux/platform_data/keypad-ep93xx.h
> @@ -9,8 +9,7 @@ struct matrix_keymap_data;
> #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
> #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
> #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
> -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
> -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
> +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
You have re-defined the keypad register bits here.
The KDIV bit changes the clock rate. The AUTOREPEAT bit enables key autorepeat.
Hartley
On 15/04/2019 21:25, Arnd Bergmann wrote:
> ep93xx does not have a proper pinctrl driver, but does things
> ad-hoc through mach/platform.h, which is also used for setting
> up the boards.
>
> To avoid using mach/*.h headers completely, let's move the interfaces
> into include/linux/soc/. This is far from great, but gets the job
> done here, without the need for a proper pinctrl driver.
Acked-by: Alexander Sverdlin <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-ep93xx/clock.c | 1 +
> arch/arm/mach-ep93xx/core.c | 2 ++
> arch/arm/mach-ep93xx/include/mach/platform.h | 16 ---------
> drivers/ata/pata_ep93xx.c | 2 +-
> drivers/input/keyboard/ep93xx_keypad.c | 3 +-
> drivers/pwm/pwm-ep93xx.c | 2 +-
> include/linux/soc/cirrus/ep93xx.h | 37 ++++++++++++++++++++
> sound/soc/cirrus/edb93xx.c | 2 +-
> sound/soc/cirrus/ep93xx-ac97.c | 1 +
> sound/soc/cirrus/ep93xx-i2s.c | 3 +-
> sound/soc/cirrus/simone.c | 2 +-
> sound/soc/cirrus/snappercl15.c | 2 +-
> 12 files changed, 48 insertions(+), 25 deletions(-)
> create mode 100644 include/linux/soc/cirrus/ep93xx.h
>
> diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
> index d2eee707d27f..9f43362eb62d 100644
> --- a/arch/arm/mach-ep93xx/clock.c
> +++ b/arch/arm/mach-ep93xx/clock.c
> @@ -20,6 +20,7 @@
> #include <linux/io.h>
> #include <linux/spinlock.h>
> #include <linux/clkdev.h>
> +#include <linux/soc/cirrus/ep93xx.h>
>
> #include <mach/hardware.h>
>
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 706515faee06..3d245668846d 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -43,6 +43,8 @@
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/keypad-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> +#include <linux/soc/cirrus/ep93xx.h>
> +
> #include <mach/gpio-ep93xx.h>
>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
> index 43446f33c2be..b4045a186239 100644
> --- a/arch/arm/mach-ep93xx/include/mach/platform.h
> +++ b/arch/arm/mach-ep93xx/include/mach/platform.h
> @@ -19,14 +19,6 @@ struct ep93xx_spi_info;
> void ep93xx_map_io(void);
> void ep93xx_init_irq(void);
>
> -#define EP93XX_CHIP_REV_D0 3
> -#define EP93XX_CHIP_REV_D1 4
> -#define EP93XX_CHIP_REV_E0 5
> -#define EP93XX_CHIP_REV_E1 6
> -#define EP93XX_CHIP_REV_E2 7
> -
> -unsigned int ep93xx_chip_revision(void);
> -
> void ep93xx_register_flash(unsigned int width,
> resource_size_t start, resource_size_t size);
>
> @@ -36,19 +28,11 @@ void ep93xx_register_spi(struct ep93xx_spi_info *info,
> struct spi_board_info *devices, int num);
> void ep93xx_register_fb(struct ep93xxfb_mach_info *data);
> void ep93xx_register_pwm(int pwm0, int pwm1);
> -int ep93xx_pwm_acquire_gpio(struct platform_device *pdev);
> -void ep93xx_pwm_release_gpio(struct platform_device *pdev);
> void ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data);
> -int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
> -void ep93xx_keypad_release_gpio(struct platform_device *pdev);
> void ep93xx_register_i2s(void);
> -int ep93xx_i2s_acquire(void);
> -void ep93xx_i2s_release(void);
> void ep93xx_register_ac97(void);
> void ep93xx_register_ide(void);
> void ep93xx_register_adc(void);
> -int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
> -void ep93xx_ide_release_gpio(struct platform_device *pdev);
>
> struct device *ep93xx_init_devices(void);
> extern void ep93xx_timer_init(void);
> diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c
> index cc6d06c1b2c7..db271b705529 100644
> --- a/drivers/ata/pata_ep93xx.c
> +++ b/drivers/ata/pata_ep93xx.c
> @@ -44,7 +44,7 @@
> #include <linux/ktime.h>
>
> #include <linux/platform_data/dma-ep93xx.h>
> -#include <mach/platform.h>
> +#include <linux/soc/cirrus/ep93xx.h>
>
> #define DRV_NAME "ep93xx-ide"
> #define DRV_VERSION "1.0"
> diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c
> index 71472f6257c0..575dac52f7b4 100644
> --- a/drivers/input/keyboard/ep93xx_keypad.c
> +++ b/drivers/input/keyboard/ep93xx_keypad.c
> @@ -27,8 +27,7 @@
> #include <linux/io.h>
> #include <linux/input/matrix_keypad.h>
> #include <linux/slab.h>
> -
> -#include <mach/hardware.h>
> +#include <linux/soc/cirrus/ep93xx.h>
> #include <linux/platform_data/keypad-ep93xx.h>
>
> /*
> diff --git a/drivers/pwm/pwm-ep93xx.c b/drivers/pwm/pwm-ep93xx.c
> index bbf10ae02f0e..fa168581e6b8 100644
> --- a/drivers/pwm/pwm-ep93xx.c
> +++ b/drivers/pwm/pwm-ep93xx.c
> @@ -35,7 +35,7 @@
>
> #include <asm/div64.h>
>
> -#include <mach/platform.h> /* for ep93xx_pwm_{acquire,release}_gpio() */
> +#include <linux/soc/cirrus/ep93xx.h> /* for ep93xx_pwm_{acquire,release}_gpio() */
>
> #define EP93XX_PWMx_TERM_COUNT 0x00
> #define EP93XX_PWMx_DUTY_CYCLE 0x04
> diff --git a/include/linux/soc/cirrus/ep93xx.h b/include/linux/soc/cirrus/ep93xx.h
> new file mode 100644
> index 000000000000..56fbe2dc59b1
> --- /dev/null
> +++ b/include/linux/soc/cirrus/ep93xx.h
> @@ -0,0 +1,37 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _SOC_EP93XX_H
> +#define _SOC_EP93XX_H
> +
> +struct platform_device;
> +
> +#define EP93XX_CHIP_REV_D0 3
> +#define EP93XX_CHIP_REV_D1 4
> +#define EP93XX_CHIP_REV_E0 5
> +#define EP93XX_CHIP_REV_E1 6
> +#define EP93XX_CHIP_REV_E2 7
> +
> +#ifdef CONFIG_ARCH_EP93XX
> +int ep93xx_pwm_acquire_gpio(struct platform_device *pdev);
> +void ep93xx_pwm_release_gpio(struct platform_device *pdev);
> +int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
> +void ep93xx_ide_release_gpio(struct platform_device *pdev);
> +int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
> +void ep93xx_keypad_release_gpio(struct platform_device *pdev);
> +int ep93xx_i2s_acquire(void);
> +void ep93xx_i2s_release(void);
> +unsigned int ep93xx_chip_revision(void);
> +
> +#else
> +static inline int ep93xx_pwm_acquire_gpio(struct platform_device *pdev) { return 0; }
> +static inline void ep93xx_pwm_release_gpio(struct platform_device *pdev) {}
> +static inline int ep93xx_ide_acquire_gpio(struct platform_device *pdev) { return 0; }
> +static inline void ep93xx_ide_release_gpio(struct platform_device *pdev) {}
> +static inline int ep93xx_keypad_acquire_gpio(struct platform_device *pdev) { return 0; }
> +static inline void ep93xx_keypad_release_gpio(struct platform_device *pdev) {}
> +static inline int ep93xx_i2s_acquire(void) { return 0; }
> +static inline void ep93xx_i2s_release(void) {}
> +static inline unsigned int ep93xx_chip_revision(void) { return 0; }
> +
> +#endif
> +
> +#endif
> diff --git a/sound/soc/cirrus/edb93xx.c b/sound/soc/cirrus/edb93xx.c
> index 3d011abaa266..f678b4c1514a 100644
> --- a/sound/soc/cirrus/edb93xx.c
> +++ b/sound/soc/cirrus/edb93xx.c
> @@ -22,11 +22,11 @@
> #include <linux/platform_device.h>
> #include <linux/gpio.h>
> #include <linux/module.h>
> +#include <linux/soc/cirrus/ep93xx.h>
> #include <sound/core.h>
> #include <sound/pcm.h>
> #include <sound/soc.h>
> #include <asm/mach-types.h>
> -#include <mach/hardware.h>
>
> static int edb93xx_hw_params(struct snd_pcm_substream *substream,
> struct snd_pcm_hw_params *params)
> diff --git a/sound/soc/cirrus/ep93xx-ac97.c b/sound/soc/cirrus/ep93xx-ac97.c
> index cd5a939ad608..c6bc447429af 100644
> --- a/sound/soc/cirrus/ep93xx-ac97.c
> +++ b/sound/soc/cirrus/ep93xx-ac97.c
> @@ -24,6 +24,7 @@
> #include <sound/soc.h>
>
> #include <linux/platform_data/dma-ep93xx.h>
> +#include <linux/soc/cirrus/ep93xx.h>
>
> #include "ep93xx-pcm.h"
>
> diff --git a/sound/soc/cirrus/ep93xx-i2s.c b/sound/soc/cirrus/ep93xx-i2s.c
> index 0918c5da575a..beab7c516855 100644
> --- a/sound/soc/cirrus/ep93xx-i2s.c
> +++ b/sound/soc/cirrus/ep93xx-i2s.c
> @@ -27,9 +27,8 @@
> #include <sound/initval.h>
> #include <sound/soc.h>
>
> -#include <mach/hardware.h>
> -#include <mach/ep93xx-regs.h>
> #include <linux/platform_data/dma-ep93xx.h>
> +#include <linux/soc/cirrus/ep93xx.h>
>
> #include "ep93xx-pcm.h"
>
> diff --git a/sound/soc/cirrus/simone.c b/sound/soc/cirrus/simone.c
> index 1ec661834e5a..cb850530331b 100644
> --- a/sound/soc/cirrus/simone.c
> +++ b/sound/soc/cirrus/simone.c
> @@ -13,13 +13,13 @@
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/platform_device.h>
> +#include <linux/soc/cirrus/ep93xx.h>
>
> #include <sound/core.h>
> #include <sound/pcm.h>
> #include <sound/soc.h>
>
> #include <asm/mach-types.h>
> -#include <mach/hardware.h>
>
> static struct snd_soc_dai_link simone_dai = {
> .name = "AC97",
> diff --git a/sound/soc/cirrus/snappercl15.c b/sound/soc/cirrus/snappercl15.c
> index 11ff7b2672b2..dea4909154c8 100644
> --- a/sound/soc/cirrus/snappercl15.c
> +++ b/sound/soc/cirrus/snappercl15.c
> @@ -13,12 +13,12 @@
>
> #include <linux/platform_device.h>
> #include <linux/module.h>
> +#include <linux/soc/cirrus/ep93xx.h>
> #include <sound/core.h>
> #include <sound/pcm.h>
> #include <sound/soc.h>
>
> #include <asm/mach-types.h>
> -#include <mach/hardware.h>
>
> #include "../codecs/tlv320aic23.h"
>
>
On 15/04/2019 21:31, Arnd Bergmann wrote:
> gpio-ep93xx.h, hardware.h, and platform.h are only used in
> arch/arm/mach-ep93xx, so we can move them one there and no
> longer expose them to device drivers.
Acked-by: Alexander Sverdlin <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-ep93xx/adssphere.c | 2 +-
> arch/arm/mach-ep93xx/clock.c | 2 +-
> arch/arm/mach-ep93xx/core.c | 6 +++---
> arch/arm/mach-ep93xx/dma.c | 2 +-
> arch/arm/mach-ep93xx/edb93xx.c | 4 ++--
> arch/arm/mach-ep93xx/gesbc9312.c | 2 +-
> arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h | 0
> arch/arm/mach-ep93xx/{include/mach => }/hardware.h | 2 +-
> arch/arm/mach-ep93xx/micro9.c | 2 +-
> arch/arm/mach-ep93xx/{include/mach => }/platform.h | 0
> arch/arm/mach-ep93xx/simone.c | 4 ++--
> arch/arm/mach-ep93xx/snappercl15.c | 4 ++--
> arch/arm/mach-ep93xx/ts72xx.c | 4 ++--
> arch/arm/mach-ep93xx/vision_ep9307.c | 4 ++--
> 14 files changed, 19 insertions(+), 19 deletions(-)
> rename arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h (100%)
> rename arch/arm/mach-ep93xx/{include/mach => }/hardware.h (96%)
> rename arch/arm/mach-ep93xx/{include/mach => }/platform.h (100%)
>
> diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c
> index bda6c3a5c923..5d3a3e302012 100644
> --- a/arch/arm/mach-ep93xx/adssphere.c
> +++ b/arch/arm/mach-ep93xx/adssphere.c
> @@ -15,7 +15,7 @@
> #include <linux/platform_device.h>
> #include <linux/sizes.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
> index 9f43362eb62d..b9f523d9dc8c 100644
> --- a/arch/arm/mach-ep93xx/clock.c
> +++ b/arch/arm/mach-ep93xx/clock.c
> @@ -22,7 +22,7 @@
> #include <linux/clkdev.h>
> #include <linux/soc/cirrus/ep93xx.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/div64.h>
>
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 3d245668846d..cc1382f879af 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -39,13 +39,13 @@
> #include <linux/usb/ohci_pdriver.h>
> #include <linux/random.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/keypad-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> #include <linux/soc/cirrus/ep93xx.h>
>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach/arch.h>
> #include <asm/mach/map.h>
> @@ -125,7 +125,7 @@ void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits)
> /**
> * ep93xx_chip_revision() - returns the EP93xx chip revision
> *
> - * See <mach/platform.h> for more information.
> + * See "platform.h" for more information.
> */
> unsigned int ep93xx_chip_revision(void)
> {
> diff --git a/arch/arm/mach-ep93xx/dma.c b/arch/arm/mach-ep93xx/dma.c
> index 88a4c9b089a5..821427107b11 100644
> --- a/arch/arm/mach-ep93xx/dma.c
> +++ b/arch/arm/mach-ep93xx/dma.c
> @@ -26,7 +26,7 @@
> #include <linux/platform_device.h>
>
> #include <linux/platform_data/dma-ep93xx.h>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include "soc.h"
>
> diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c
> index 8e89ec8b6f0f..d96dd014dd23 100644
> --- a/arch/arm/mach-ep93xx/edb93xx.c
> +++ b/arch/arm/mach-ep93xx/edb93xx.c
> @@ -32,10 +32,10 @@
>
> #include <sound/cs4271.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c
> index 0cca5b183309..ac48e3476587 100644
> --- a/arch/arm/mach-ep93xx/gesbc9312.c
> +++ b/arch/arm/mach-ep93xx/gesbc9312.c
> @@ -15,7 +15,7 @@
> #include <linux/platform_device.h>
> #include <linux/sizes.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h b/arch/arm/mach-ep93xx/gpio-ep93xx.h
> similarity index 100%
> rename from arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
> rename to arch/arm/mach-ep93xx/gpio-ep93xx.h
> diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/hardware.h
> similarity index 96%
> rename from arch/arm/mach-ep93xx/include/mach/hardware.h
> rename to arch/arm/mach-ep93xx/hardware.h
> index 8938906e780a..e7d850e04782 100644
> --- a/arch/arm/mach-ep93xx/include/mach/hardware.h
> +++ b/arch/arm/mach-ep93xx/hardware.h
> @@ -6,7 +6,7 @@
> #ifndef __ASM_ARCH_HARDWARE_H
> #define __ASM_ARCH_HARDWARE_H
>
> -#include <mach/platform.h>
> +#include "platform.h"
>
> /*
> * The EP93xx has two external crystal oscillators. To generate the
> diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c
> index 373583c29825..c7f64e4ff6c7 100644
> --- a/arch/arm/mach-ep93xx/micro9.c
> +++ b/arch/arm/mach-ep93xx/micro9.c
> @@ -16,7 +16,7 @@
> #include <linux/platform_device.h>
> #include <linux/io.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/platform.h
> similarity index 100%
> rename from arch/arm/mach-ep93xx/include/mach/platform.h
> rename to arch/arm/mach-ep93xx/platform.h
> diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c
> index 80ccb984d521..adc17289cc23 100644
> --- a/arch/arm/mach-ep93xx/simone.c
> +++ b/arch/arm/mach-ep93xx/simone.c
> @@ -27,8 +27,8 @@
> #include <linux/gpio.h>
> #include <linux/gpio/machine.h>
>
> -#include <mach/hardware.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "hardware.h"
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c
> index cf0cb58b3454..f8f89551dbed 100644
> --- a/arch/arm/mach-ep93xx/snappercl15.c
> +++ b/arch/arm/mach-ep93xx/snappercl15.c
> @@ -25,9 +25,9 @@
>
> #include <linux/mtd/platnand.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c
> index 85b74ac943f0..bba6aa5d7106 100644
> --- a/arch/arm/mach-ep93xx/ts72xx.c
> +++ b/arch/arm/mach-ep93xx/ts72xx.c
> @@ -23,8 +23,8 @@
> #include <linux/mmc/host.h>
> #include <linux/platform_data/spi-ep93xx.h>
>
> -#include <mach/gpio-ep93xx.h>
> -#include <mach/hardware.h>
> +#include "gpio-ep93xx.h"
> +#include "hardware.h"
> #include <mach/irqs.h>
>
> #include <asm/mach-types.h>
> diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c b/arch/arm/mach-ep93xx/vision_ep9307.c
> index 767ee64628dc..66e2b34aa779 100644
> --- a/arch/arm/mach-ep93xx/vision_ep9307.c
> +++ b/arch/arm/mach-ep93xx/vision_ep9307.c
> @@ -31,10 +31,10 @@
>
> #include <sound/cs4271.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
>
On Mon, Apr 15, 2019 at 9:39 PM Hartley Sweeten
<[email protected]> wrote:
>
> On Monday, April 15, 2019 12:25 PM, Arnd Bergmann wrote:
> > We can communicate the clock rate using platform data rather than setting a
> > flag to use a particular value in the driver, which is cleaner and avoids the dependency.
> >
> > No platform in the kernel currently defines the ep93xx keypad device structure, so this
> > is a rather pointless excercise. Any out of tree users are probably dead now, but if not,
> > they have to change their platform code to match the new platform_data structure.
>
> <snip>
>
> > diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
> > index 0e36818e3680..3054fced8509 100644
> > --- a/include/linux/platform_data/keypad-ep93xx.h
> > +++ b/include/linux/platform_data/keypad-ep93xx.h
> > @@ -9,8 +9,7 @@ struct matrix_keymap_data;
> > #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
> > #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
> > #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
> > -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
> > -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
> > +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
>
> You have re-defined the keypad register bits here.
>
> The KDIV bit changes the clock rate. The AUTOREPEAT bit enables key autorepeat.
As far as I can tell, they are not register bits, just software flags
for communicating between a board file and the driver, so I
assumed I could freely reorganize them.
Did I miss something?
Arnd
On Monday, April 15, 2019 12:47 PM, Arnd Bergmann wrote:
> On Mon, Apr 15, 2019 at 9:39 PM Hartley Sweeten <[email protected]> wrote:
>>> -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
>>> -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
>>> +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
>>
>> You have re-defined the keypad register bits here.
>>
>> The KDIV bit changes the clock rate. The AUTOREPEAT bit enables key autorepeat.
>
> As far as I can tell, they are not register bits, just software flags for communicating between a
> board file and the driver, so I assumed I could freely reorganize them.
>
> Did I miss something?
Ugh.. It's been quite a while since I looked at that code...
Your correct, these are just flags to the driver.
The KeyScanInit register does have some bits that these flags effect but the driver deals
with them.
I have been buried updating an old PowerPC hardware/software design and haven't looked
at the EP93xx lately. My EP9307 board does have the keypad interface. Hopefully I will get
some time to check the latest mainline on it sometime soon.
Overall these patches look good. So, for the series...
Acked-by: H Hartley Sweeten <[email protected]>
On Mon, Apr 15, 2019 at 12:56 PM Alexander Sverdlin
<[email protected]> wrote:
>
> Hi!
>
> On 15/04/2019 21:47, Arnd Bergmann wrote:
> >>> We can communicate the clock rate using platform data rather than setting a
> >>> flag to use a particular value in the driver, which is cleaner and avoids the dependency.
> >>>
> >>> No platform in the kernel currently defines the ep93xx keypad device structure, so this
> >>> is a rather pointless excercise. Any out of tree users are probably dead now, but if not,
> >>> they have to change their platform code to match the new platform_data structure.
> >> <snip>
> >>
> >>> diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
> >>> index 0e36818e3680..3054fced8509 100644
> >>> --- a/include/linux/platform_data/keypad-ep93xx.h
> >>> +++ b/include/linux/platform_data/keypad-ep93xx.h
> >>> @@ -9,8 +9,7 @@ struct matrix_keymap_data;
> >>> #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
> >>> #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
> >>> #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
> >>> -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
> >>> -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
> >>> +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
> >> You have re-defined the keypad register bits here.
> >>
> >> The KDIV bit changes the clock rate. The AUTOREPEAT bit enables key autorepeat.
> > As far as I can tell, they are not register bits, just software flags
> > for communicating between a board file and the driver, so I
> > assumed I could freely reorganize them.
> >
> > Did I miss something?
>
> They are indeed only software flags (just checked datasheet), so you are only changing
> platform data format. But as I do not know any keypad user in person, I'd rely on
> Hartley's opinion in this case (if it's a good idea to change platform data or not).
>
If there are out-of-tree users, it would be their responsibility to
upstream their code. If they don't, any changes in platform data is
their problem, not ours. Either case, platform data does, if anything,
reflect an in-kernel API, and thus is fair game for cleanup.
Guenter
We can communicate the clock rate using platform data rather than setting
a flag to use a particular value in the driver, which is cleaner and
avoids the dependency.
No platform in the kernel currently defines the ep93xx keypad device
structure, so this is a rather pointless excercise. Any out of tree
users are probably dead now, but if not, they have to change their
platform code to match the new platform_data structure.
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/input/keyboard/Kconfig | 2 +-
drivers/input/keyboard/ep93xx_keypad.c | 5 +----
include/linux/platform_data/keypad-ep93xx.h | 4 ++--
3 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index a878351f1643..b373f3274542 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -194,7 +194,7 @@ config KEYBOARD_LKKBD
config KEYBOARD_EP93XX
tristate "EP93xx Matrix Keypad support"
- depends on ARCH_EP93XX
+ depends on ARCH_EP93XX || COMPILE_TEST
select INPUT_MATRIXKMAP
help
Say Y here to enable the matrix keypad on the Cirrus EP93XX.
diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c
index f77b295e0123..71472f6257c0 100644
--- a/drivers/input/keyboard/ep93xx_keypad.c
+++ b/drivers/input/keyboard/ep93xx_keypad.c
@@ -137,10 +137,7 @@ static void ep93xx_keypad_config(struct ep93xx_keypad *keypad)
struct ep93xx_keypad_platform_data *pdata = keypad->pdata;
unsigned int val = 0;
- if (pdata->flags & EP93XX_KEYPAD_KDIV)
- clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV4);
- else
- clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV16);
+ clk_set_rate(keypad->clk, pdata->clk_rate);
if (pdata->flags & EP93XX_KEYPAD_DISABLE_3_KEY)
val |= KEY_INIT_DIS3KY;
diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
index 0e36818e3680..3054fced8509 100644
--- a/include/linux/platform_data/keypad-ep93xx.h
+++ b/include/linux/platform_data/keypad-ep93xx.h
@@ -9,8 +9,7 @@ struct matrix_keymap_data;
#define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
#define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
#define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
-#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
-#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
+#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
/**
* struct ep93xx_keypad_platform_data - platform specific device structure
@@ -24,6 +23,7 @@ struct ep93xx_keypad_platform_data {
unsigned int debounce;
unsigned int prescale;
unsigned int flags;
+ unsigned int clk_rate;
};
#define EP93XX_MATRIX_ROWS (8)
--
2.20.0
Hi!
On 15/04/2019 21:47, Arnd Bergmann wrote:
>>> We can communicate the clock rate using platform data rather than setting a
>>> flag to use a particular value in the driver, which is cleaner and avoids the dependency.
>>>
>>> No platform in the kernel currently defines the ep93xx keypad device structure, so this
>>> is a rather pointless excercise. Any out of tree users are probably dead now, but if not,
>>> they have to change their platform code to match the new platform_data structure.
>> <snip>
>>
>>> diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
>>> index 0e36818e3680..3054fced8509 100644
>>> --- a/include/linux/platform_data/keypad-ep93xx.h
>>> +++ b/include/linux/platform_data/keypad-ep93xx.h
>>> @@ -9,8 +9,7 @@ struct matrix_keymap_data;
>>> #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
>>> #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
>>> #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
>>> -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
>>> -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
>>> +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
>> You have re-defined the keypad register bits here.
>>
>> The KDIV bit changes the clock rate. The AUTOREPEAT bit enables key autorepeat.
> As far as I can tell, they are not register bits, just software flags
> for communicating between a board file and the driver, so I
> assumed I could freely reorganize them.
>
> Did I miss something?
They are indeed only software flags (just checked datasheet), so you are only changing
platform data format. But as I do not know any keypad user in person, I'd rely on
Hartley's opinion in this case (if it's a good idea to change platform data or not).
--
Alex.
On Mon, 15 Apr 2019 21:31:50 +0200
Arnd Bergmann <[email protected]> wrote:
> gpio-ep93xx.h, hardware.h, and platform.h are only used in
> arch/arm/mach-ep93xx, so we can move them one there and no
> longer expose them to device drivers.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-ep93xx/adssphere.c | 2 +-
> arch/arm/mach-ep93xx/clock.c | 2 +-
> arch/arm/mach-ep93xx/core.c | 6 +++---
> arch/arm/mach-ep93xx/dma.c | 2 +-
> arch/arm/mach-ep93xx/edb93xx.c | 4 ++--
> arch/arm/mach-ep93xx/gesbc9312.c | 2 +-
> arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h | 0
> arch/arm/mach-ep93xx/{include/mach => }/hardware.h | 2 +-
> arch/arm/mach-ep93xx/micro9.c | 2 +-
> arch/arm/mach-ep93xx/{include/mach => }/platform.h | 0
> arch/arm/mach-ep93xx/simone.c | 4 ++--
> arch/arm/mach-ep93xx/snappercl15.c | 4 ++--
> arch/arm/mach-ep93xx/ts72xx.c | 4 ++--
> arch/arm/mach-ep93xx/vision_ep9307.c | 4 ++--
> 14 files changed, 19 insertions(+), 19 deletions(-)
> rename arch/arm/mach-ep93xx/{include/mach => }/gpio-ep93xx.h (100%)
> rename arch/arm/mach-ep93xx/{include/mach => }/hardware.h (96%)
> rename arch/arm/mach-ep93xx/{include/mach => }/platform.h (100%)
>
Reviewed-by: Lukasz Majewski <[email protected]>
> diff --git a/arch/arm/mach-ep93xx/adssphere.c
> b/arch/arm/mach-ep93xx/adssphere.c index bda6c3a5c923..5d3a3e302012
> 100644 --- a/arch/arm/mach-ep93xx/adssphere.c
> +++ b/arch/arm/mach-ep93xx/adssphere.c
> @@ -15,7 +15,7 @@
> #include <linux/platform_device.h>
> #include <linux/sizes.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/clock.c
> b/arch/arm/mach-ep93xx/clock.c index 9f43362eb62d..b9f523d9dc8c 100644
> --- a/arch/arm/mach-ep93xx/clock.c
> +++ b/arch/arm/mach-ep93xx/clock.c
> @@ -22,7 +22,7 @@
> #include <linux/clkdev.h>
> #include <linux/soc/cirrus/ep93xx.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/div64.h>
>
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 3d245668846d..cc1382f879af 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -39,13 +39,13 @@
> #include <linux/usb/ohci_pdriver.h>
> #include <linux/random.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/keypad-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> #include <linux/soc/cirrus/ep93xx.h>
>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach/arch.h>
> #include <asm/mach/map.h>
> @@ -125,7 +125,7 @@ void ep93xx_devcfg_set_clear(unsigned int
> set_bits, unsigned int clear_bits) /**
> * ep93xx_chip_revision() - returns the EP93xx chip revision
> *
> - * See <mach/platform.h> for more information.
> + * See "platform.h" for more information.
> */
> unsigned int ep93xx_chip_revision(void)
> {
> diff --git a/arch/arm/mach-ep93xx/dma.c b/arch/arm/mach-ep93xx/dma.c
> index 88a4c9b089a5..821427107b11 100644
> --- a/arch/arm/mach-ep93xx/dma.c
> +++ b/arch/arm/mach-ep93xx/dma.c
> @@ -26,7 +26,7 @@
> #include <linux/platform_device.h>
>
> #include <linux/platform_data/dma-ep93xx.h>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include "soc.h"
>
> diff --git a/arch/arm/mach-ep93xx/edb93xx.c
> b/arch/arm/mach-ep93xx/edb93xx.c index 8e89ec8b6f0f..d96dd014dd23
> 100644 --- a/arch/arm/mach-ep93xx/edb93xx.c
> +++ b/arch/arm/mach-ep93xx/edb93xx.c
> @@ -32,10 +32,10 @@
>
> #include <sound/cs4271.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/gesbc9312.c
> b/arch/arm/mach-ep93xx/gesbc9312.c index 0cca5b183309..ac48e3476587
> 100644 --- a/arch/arm/mach-ep93xx/gesbc9312.c
> +++ b/arch/arm/mach-ep93xx/gesbc9312.c
> @@ -15,7 +15,7 @@
> #include <linux/platform_device.h>
> #include <linux/sizes.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
> b/arch/arm/mach-ep93xx/gpio-ep93xx.h similarity index 100%
> rename from arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
> rename to arch/arm/mach-ep93xx/gpio-ep93xx.h
> diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h
> b/arch/arm/mach-ep93xx/hardware.h similarity index 96%
> rename from arch/arm/mach-ep93xx/include/mach/hardware.h
> rename to arch/arm/mach-ep93xx/hardware.h
> index 8938906e780a..e7d850e04782 100644
> --- a/arch/arm/mach-ep93xx/include/mach/hardware.h
> +++ b/arch/arm/mach-ep93xx/hardware.h
> @@ -6,7 +6,7 @@
> #ifndef __ASM_ARCH_HARDWARE_H
> #define __ASM_ARCH_HARDWARE_H
>
> -#include <mach/platform.h>
> +#include "platform.h"
>
> /*
> * The EP93xx has two external crystal oscillators. To generate the
> diff --git a/arch/arm/mach-ep93xx/micro9.c
> b/arch/arm/mach-ep93xx/micro9.c index 373583c29825..c7f64e4ff6c7
> 100644 --- a/arch/arm/mach-ep93xx/micro9.c
> +++ b/arch/arm/mach-ep93xx/micro9.c
> @@ -16,7 +16,7 @@
> #include <linux/platform_device.h>
> #include <linux/io.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h
> b/arch/arm/mach-ep93xx/platform.h similarity index 100%
> rename from arch/arm/mach-ep93xx/include/mach/platform.h
> rename to arch/arm/mach-ep93xx/platform.h
> diff --git a/arch/arm/mach-ep93xx/simone.c
> b/arch/arm/mach-ep93xx/simone.c index 80ccb984d521..adc17289cc23
> 100644 --- a/arch/arm/mach-ep93xx/simone.c
> +++ b/arch/arm/mach-ep93xx/simone.c
> @@ -27,8 +27,8 @@
> #include <linux/gpio.h>
> #include <linux/gpio/machine.h>
>
> -#include <mach/hardware.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "hardware.h"
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/snappercl15.c
> b/arch/arm/mach-ep93xx/snappercl15.c index cf0cb58b3454..f8f89551dbed
> 100644 --- a/arch/arm/mach-ep93xx/snappercl15.c
> +++ b/arch/arm/mach-ep93xx/snappercl15.c
> @@ -25,9 +25,9 @@
>
> #include <linux/mtd/platnand.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/arch.h>
> diff --git a/arch/arm/mach-ep93xx/ts72xx.c
> b/arch/arm/mach-ep93xx/ts72xx.c index 85b74ac943f0..bba6aa5d7106
> 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c
> +++ b/arch/arm/mach-ep93xx/ts72xx.c
> @@ -23,8 +23,8 @@
> #include <linux/mmc/host.h>
> #include <linux/platform_data/spi-ep93xx.h>
>
> -#include <mach/gpio-ep93xx.h>
> -#include <mach/hardware.h>
> +#include "gpio-ep93xx.h"
> +#include "hardware.h"
> #include <mach/irqs.h>
>
> #include <asm/mach-types.h>
> diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c
> b/arch/arm/mach-ep93xx/vision_ep9307.c index
> 767ee64628dc..66e2b34aa779 100644 ---
> a/arch/arm/mach-ep93xx/vision_ep9307.c +++
> b/arch/arm/mach-ep93xx/vision_ep9307.c @@ -31,10 +31,10 @@
>
> #include <sound/cs4271.h>
>
> -#include <mach/hardware.h>
> +#include "hardware.h"
> #include <linux/platform_data/video-ep93xx.h>
> #include <linux/platform_data/spi-ep93xx.h>
> -#include <mach/gpio-ep93xx.h>
> +#include "gpio-ep93xx.h"
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: [email protected]
On Mon, Apr 15, 2019 at 09:25:24PM +0200, Arnd Bergmann wrote:
> We can communicate the clock rate using platform data rather than setting
> a flag to use a particular value in the driver, which is cleaner and
> avoids the dependency.
>
> No platform in the kernel currently defines the ep93xx keypad device
> structure, so this is a rather pointless excercise. Any out of tree
> users are probably dead now, but if not, they have to change their
> platform code to match the new platform_data structure.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Dmitry Torokhov <[email protected]>
Please feel free to merge with the rest of the patches.
> ---
> drivers/input/keyboard/Kconfig | 2 +-
> drivers/input/keyboard/ep93xx_keypad.c | 5 +----
> include/linux/platform_data/keypad-ep93xx.h | 4 ++--
> 3 files changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
> index a878351f1643..b373f3274542 100644
> --- a/drivers/input/keyboard/Kconfig
> +++ b/drivers/input/keyboard/Kconfig
> @@ -194,7 +194,7 @@ config KEYBOARD_LKKBD
>
> config KEYBOARD_EP93XX
> tristate "EP93xx Matrix Keypad support"
> - depends on ARCH_EP93XX
> + depends on ARCH_EP93XX || COMPILE_TEST
> select INPUT_MATRIXKMAP
> help
> Say Y here to enable the matrix keypad on the Cirrus EP93XX.
> diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c
> index f77b295e0123..71472f6257c0 100644
> --- a/drivers/input/keyboard/ep93xx_keypad.c
> +++ b/drivers/input/keyboard/ep93xx_keypad.c
> @@ -137,10 +137,7 @@ static void ep93xx_keypad_config(struct ep93xx_keypad *keypad)
> struct ep93xx_keypad_platform_data *pdata = keypad->pdata;
> unsigned int val = 0;
>
> - if (pdata->flags & EP93XX_KEYPAD_KDIV)
> - clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV4);
> - else
> - clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV16);
> + clk_set_rate(keypad->clk, pdata->clk_rate);
>
> if (pdata->flags & EP93XX_KEYPAD_DISABLE_3_KEY)
> val |= KEY_INIT_DIS3KY;
> diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
> index 0e36818e3680..3054fced8509 100644
> --- a/include/linux/platform_data/keypad-ep93xx.h
> +++ b/include/linux/platform_data/keypad-ep93xx.h
> @@ -9,8 +9,7 @@ struct matrix_keymap_data;
> #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
> #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
> #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
> -#define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
> -#define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
> +#define EP93XX_KEYPAD_AUTOREPEAT (1<<4) /* enable key autorepeat */
>
> /**
> * struct ep93xx_keypad_platform_data - platform specific device structure
> @@ -24,6 +23,7 @@ struct ep93xx_keypad_platform_data {
> unsigned int debounce;
> unsigned int prescale;
> unsigned int flags;
> + unsigned int clk_rate;
> };
>
> #define EP93XX_MATRIX_ROWS (8)
> --
> 2.20.0
>
--
Dmitry
On Mon, Apr 15, 2019 at 9:27 PM Arnd Bergmann <[email protected]> wrote:
> The header file is the only thing preventing us from building the
> driver in a cross-platform configuration, so move the structure
> we are interested in to the global platform_data location
> and enable compile testing.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
My EP93xx board is not working right now but looks good to me.
Acked-by: Linus Walleij <[email protected]>
Yours,
Linus Walleij
On Mon, Apr 15, 2019 at 9:30 PM Arnd Bergmann <[email protected]> wrote:
> ep93xx does not have a proper pinctrl driver, but does things
> ad-hoc through mach/platform.h, which is also used for setting
> up the boards.
>
> To avoid using mach/*.h headers completely, let's move the interfaces
> into include/linux/soc/. This is far from great, but gets the job
> done here, without the need for a proper pinctrl driver.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Linus Walleij <[email protected]>
Yours,
Linus Walleij