hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 * Pulse Width Modulation Memory Map
 *
 * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
 * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#ifndef __ATA_H__
#define __ATA_H__
 
/* Pulse Width Modulation (PWM) */
typedef struct pwm_ctrl {
#ifdef CONFIG_M5272
   u8 cr0;
   u8 res1[3];
   u8 cr1;
   u8 res2[3];
   u8 cr2;
   u8 res3[7];
   u8 pwr0;
   u8 res4[3];
   u8 pwr1;
   u8 res5[3];
   u8 pwr2;
   u8 res6[7];
#else
   u8 en;            /* 0x00 PWM Enable */
   u8 pol;            /* 0x01 Polarity */
   u8 clk;            /* 0x02 Clock Select */
   u8 prclk;        /* 0x03 Prescale Clock Select */
   u8 cae;            /* 0x04 Center Align Enable */
   u8 ctl;            /* 0x05 Control */
   u16 res1;        /* 0x06 - 0x07 */
   u8 scla;        /* 0x08 Scale A */
   u8 sclb;        /* 0x09 Scale B */
   u16 res2;        /* 0x0A - 0x0B */
#ifdef CONFIG_M5275
   u8 cnt[4];        /* 0x0C Channel n Counter */
   u16 res3;        /* 0x10 - 0x11 */
   u8 per[4];        /* 0x14 Channel n Period */
   u16 res4;        /* 0x16 - 0x17 */
   u8 dty[4];        /* 0x18 Channel n Duty */
#else
   u8 cnt[8];        /* 0x0C Channel n Counter */
   u8 per[8];        /* 0x14 Channel n Period */
   u8 dty[8];        /* 0x1C Channel n Duty */
   u8 sdn;            /* 0x24 Shutdown */
   u8 res3[3];        /* 0x25 - 0x27 */
#endif                /* CONFIG_M5275 */
#endif                /* CONFIG_M5272 */
} pwm_t;
 
#ifdef CONFIG_M5272
 
#define PWM_CR_EN            (0x80)
#define PWM_CR_FRC1            (0x40)
#define PWM_CR_LVL            (0x20)
#define PWM_CR_CLKSEL(x)        ((x) & 0x0F)
#define PWM_CR_CLKSEL_MASK        (0xF0)
 
#else
 
#define PWM_EN_PWMEn(x)            (1 << ((x) & 0x07))
#define PWM_EN_PWMEn_MASK        (0xF0)
 
#define PWM_POL_PPOLn(x)        (1 << ((x) & 0x07))
#define PWM_POL_PPOLn_MASK        (0xF0)
 
#define PWM_CLK_PCLKn(x)        (1 << ((x) & 0x07))
#define PWM_CLK_PCLKn_MASK        (0xF0)
 
#define PWM_PRCLK_PCKB(x)        (((x) & 0x07) << 4)
#define PWM_PRCLK_PCKB_MASK        (0x8F)
#define PWM_PRCLK_PCKA(x)        ((x) & 0x07)
#define PWM_PRCLK_PCKA_MASK        (0xF8)
 
#define PWM_CLK_PCLKn(x)        (1 << ((x) & 0x07))
#define PWM_CLK_PCLKn_MASK        (0xF0)
 
#define PWM_CTL_CON67            (0x80)
#define PWM_CTL_CON45            (0x40)
#define PWM_CTL_CON23            (0x20)
#define PWM_CTL_CON01            (0x10)
#define PWM_CTL_PSWAR            (0x08)
#define PWM_CTL_PFRZ            (0x04)
 
#define PWM_SDN_IF            (0x80)
#define PWM_SDN_IE            (0x40)
#define PWM_SDN_RESTART            (0x20)
#define PWM_SDN_LVL            (0x10)
#define PWM_SDN_PWM7IN            (0x04)
#define PWM_SDN_PWM7IL            (0x02)
#define PWM_SDN_SDNEN            (0x01)
 
#endif                /* CONFIG_M5272 */
 
#endif                /* __ATA_H__ */