summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch141
1 files changed, 0 insertions, 141 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch b/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch
deleted file mode 100644
index 4714dd6cc..000000000
--- a/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0013-aspeed-Add-Pwm-Driver.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 039b9a278a4d075e455a38ec93171dc812aec8b2 Mon Sep 17 00:00:00 2001
-From: Vernon Mauery <vernon.mauery@linux.intel.com>
-Date: Fri, 16 Nov 2018 15:57:57 -0800
-Subject: [PATCH 1/1] aspeed: add Pwm Driver
-
-Change-Id: Ia8b80212f7c70aafcc6a71782936ec95cf9b7f38
-Signed-off-by: James Feist <james.feist@linux.intel.com>
----
- board/aspeed/ast-g5/ast-g5-intel.c | 113 +++++++++++++++++++++++++++++
- 1 file changed, 113 insertions(+)
-
-diff --git a/board/aspeed/ast-g5/ast-g5-intel.c b/board/aspeed/ast-g5/ast-g5-intel.c
-index e74999223b..74e218dfd0 100644
---- a/board/aspeed/ast-g5/ast-g5-intel.c
-+++ b/board/aspeed/ast-g5/ast-g5-intel.c
-@@ -257,9 +257,122 @@ int intel_force_firmware_jumper_enabled(void)
- return gpio_get_value(GPIO_FF_UPD_JUMPER);
- }
-
-+/* PWM offsets */
-+
-+#define PWM_BASE_ADDR 0x1E786000
-+#define PWM_CONTROL 0x00
-+#define PWM_CLOCK_SELECTION 0x04
-+#define PWM_DUTY_CYCLE 0x08
-+#define PWM_M0 0x10
-+#define PWM_M1 0x14
-+#define PWM_N0 0x18
-+#define PWM_N1 0x1c
-+#define PWM_CONTROL_EXT 0x40
-+#define PWM_CLOCK_SEL_EXT 0x44
-+#define PWM_O0 0x50
-+#define PWM_O1 0x54
-+#define PWM_CHANNEL_COUNT 8
-+
-+#define PWM_CLK_ENABLE BIT(0)
-+#define PWM_DUTY(PCT) (((PCT) * 128) / 100)
-+#define DEFAULT_PWM_DUTY_VALUE PWM_DUTY(57)
-+
-+
-+static inline uint32_t ast_scu_read(uint32_t reg)
-+{
-+ uint32_t val = readl(AST_SCU_BASE + reg);
-+
-+ debug("ast_scu_read : reg = 0x%08x, val = 0x%08x\n", reg, val);
-+ return val;
-+}
-+
-+static inline void ast_scu_write(uint32_t val, uint32_t reg)
-+{
-+ debug("ast_scu_write : reg = 0x%08x, val = 0x%08x\n", reg, val);
-+
-+ writel(SCU_PROTECT_UNLOCK, AST_SCU_BASE);
-+ writel(val, AST_SCU_BASE + reg);
-+#ifdef CONFIG_AST_SCU_LOCK
-+ writel(0xaa, AST_SCU_BASE);
-+#endif
-+}
-+
-+static void set_pwm_duty_cycle(int duty)
-+{
-+ uint32_t chan;
-+ uint32_t val;
-+
-+ /* enable pwm channels */
-+ for (chan = 0; chan < PWM_CHANNEL_COUNT; chan++) {
-+ uint32_t base = chan < 4 ? PWM_BASE_ADDR : PWM_BASE_ADDR + 0x40;
-+ uint8_t ch_duty_shift = 16 * (chan & 0x1);
-+ uint8_t ch_pair = (chan & 0x3) / 2;
-+
-+ /* enable pwm for the channel */
-+ val = readl(base);
-+ val |= ((1 << (chan & 0x3)) << 8);
-+ writel(val, base);
-+
-+ /* set duty cycle */
-+ val = readl(base + PWM_DUTY_CYCLE + ch_pair * 4);
-+ val &= ~(0xffff << ch_duty_shift);
-+ val |= (((uint32_t)duty) << 8) << ch_duty_shift;
-+ writel(val, base + PWM_DUTY_CYCLE + ch_pair * 4);
-+ }
-+
-+}
-+
-+static void pwm_init(void)
-+{
-+ uint32_t val;
-+
-+ /* select pwm 0-7 */
-+ val = ast_scu_read(AST_SCU_FUN_PIN_CTRL3);
-+ val |= (SCU_FUN_PIN_VPIG7 | SCU_FUN_PIN_VPIG6 | SCU_FUN_PIN_VPIG5
-+ | SCU_FUN_PIN_VPIG4 | SCU_FUN_PIN_VPIG3 | SCU_FUN_PIN_VPIG2
-+ | SCU_FUN_PIN_VPIG1 | SCU_FUN_PIN_VPIG0);
-+ ast_scu_write(val, AST_SCU_FUN_PIN_CTRL3);
-+
-+ /* disable video output mux */
-+ val = ast_scu_read(AST_SCU_FUN_PIN_CTRL5);
-+ val &= 0xffffffcf;
-+ ast_scu_write(val, AST_SCU_FUN_PIN_CTRL5);
-+ val = readl(AST_SCU_FUN_PIN_CTRL6);
-+ val &= 0xfffffffc;
-+ ast_scu_write(val, AST_SCU_FUN_PIN_CTRL6);
-+
-+ /* SCU reset of PWM module */
-+ val = ast_scu_read(AST_SCU_RESET);
-+ val |= SCU_RESET_PWM;
-+ ast_scu_write(val, AST_SCU_RESET);
-+ val &= ~SCU_RESET_PWM;
-+ ast_scu_write(val, AST_SCU_RESET);
-+
-+ /* set M, N, and 0 clock regs to 0 */
-+ writel(0, PWM_BASE_ADDR + PWM_M0);
-+ writel(0, PWM_BASE_ADDR + PWM_N0);
-+ writel(0, PWM_BASE_ADDR + PWM_O0);
-+
-+ /* disable fans and tachos, set M type control */
-+ writel(0x1, PWM_BASE_ADDR + PWM_CONTROL);
-+ writel(0x1, PWM_BASE_ADDR + PWM_CONTROL_EXT);
-+
-+ set_pwm_duty_cycle(DEFAULT_PWM_DUTY_VALUE);
-+
-+ /* set up clock type M: period = 127 units at 24MHz/8 (resulting ~23kHz period) */
-+ writel(0x7f30, PWM_BASE_ADDR + PWM_CLOCK_SELECTION);
-+
-+ /* enable pwm-tacho */
-+
-+ val = readl(PWM_BASE_ADDR + PWM_CONTROL);
-+ val |= PWM_CLK_ENABLE;
-+ writel(val, PWM_BASE_ADDR + PWM_CONTROL);
-+}
-+
- extern void espi_init(void);
- void ast_g5_intel(void)
- {
-+ pwm_init();
- gpio_init(gpio_table, ARRAY_SIZE(gpio_table));
- espi_init();
- sgpio_init();
---
-2.17.1
-