aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/cpc-usb/sja2m16c.h
blob: 654bd3fc91dc318a6e9d5d0f99b46b079fb71cc8 (plain)
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
#ifndef _SJA2M16C_H
#define _SJA2M16C_H

#include "cpc.h"

#define BAUDRATE_TOLERANCE_PERCENT	1
#define SAMPLEPOINT_TOLERANCE_PERCENT	5
#define SAMPLEPOINT_UPPER_LIMIT		88

/* M16C parameters */
struct FIELD_C0CONR {
	unsigned int brp:4;
	unsigned int sam:1;
	unsigned int pr:3;
	unsigned int dummy:8;
};
struct FIELD_C1CONR {
	unsigned int ph1:3;
	unsigned int ph2:3;
	unsigned int sjw:2;
	unsigned int dummy:8;
};
typedef union C0CONR {
	unsigned char c0con;
	struct FIELD_C0CONR bc0con;
} C0CONR_T;
typedef union C1CONR {
	unsigned char c1con;
	struct FIELD_C1CONR bc1con;
} C1CONR_T;

#define SJA_TSEG1	((pParams->btr1 & 0x0f)+1)
#define SJA_TSEG2	(((pParams->btr1 & 0x70)>>4)+1)
#define SJA_BRP		((pParams->btr0 & 0x3f)+1)
#define SJA_SJW		((pParams->btr0 & 0xc0)>>6)
#define SJA_SAM		((pParams->btr1 & 0x80)>>7)
int baudrate_m16c(int clk, int brp, int pr, int ph1, int ph2);
int samplepoint_m16c(int brp, int pr, int ph1, int ph2);
int SJA1000_TO_M16C_BASIC_Params(CPC_MSG_T *pMsg);

#endif