1.1 --- a/stage2/nanonote_gpm940b0.h Mon Feb 22 17:07:55 2016 +0100
1.2 +++ b/stage2/nanonote_gpm940b0.h Mon Feb 22 18:01:27 2016 +0100
1.3 @@ -2,7 +2,7 @@
1.4 * Ben NanoNote panel-specific definitions
1.5 *
1.6 * Copyright (C) Xiangfu Liu <xiangfu@sharism.cc>
1.7 - * Copyright (C) 2015 Paul Boddie <paul@boddie.org.uk>
1.8 + * Copyright (C) 2015, 2016 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or
1.11 * modify it under the terms of the GNU General Public License as
1.12 @@ -23,50 +23,56 @@
1.13 #ifndef __NANONOTE_GPM940B0_H__
1.14 #define __NANONOTE_GPM940B0_H__
1.15
1.16 -#define __spi_write_reg1(reg, val) \
1.17 -do { \
1.18 - unsigned char no; \
1.19 - unsigned short value; \
1.20 - unsigned char a=reg; \
1.21 - unsigned char b=val; \
1.22 - __gpio_set_pin(SPEN); \
1.23 - __gpio_set_pin(SPCK); \
1.24 - __gpio_clear_pin(SPDA); \
1.25 - __gpio_clear_pin(SPEN); \
1.26 - value=((a<<8)|(b&0xFF)); \
1.27 - for(no=0;no<16;no++) \
1.28 - { \
1.29 - __gpio_clear_pin(SPCK); \
1.30 - if((value&0x8000)==0x8000) \
1.31 - __gpio_set_pin(SPDA); \
1.32 - else \
1.33 - __gpio_clear_pin(SPDA); \
1.34 - __gpio_set_pin(SPCK); \
1.35 - value=(value<<1); \
1.36 - } \
1.37 - __gpio_set_pin(SPEN); \
1.38 -} while (0)
1.39 +#include "board.h"
1.40 +#include "nanonote.h"
1.41 +
1.42 +static inline void __spi_write_reg1(u8 reg, u8 val)
1.43 +{
1.44 + u8 no, a=reg, b=val;
1.45 + u16 value;
1.46 +
1.47 + __gpio_set_pin(SPEN);
1.48 + __gpio_set_pin(SPCK);
1.49 + __gpio_clear_pin(SPDA);
1.50 + __gpio_clear_pin(SPEN);
1.51 +
1.52 + value = ((a << 8) | (b & 0xFF));
1.53 +
1.54 + for (no=0; no<16; no++)
1.55 + {
1.56 + __gpio_clear_pin(SPCK);
1.57 +
1.58 + if ((value & 0x8000) == 0x8000)
1.59 + __gpio_set_pin(SPDA);
1.60 + else
1.61 + __gpio_clear_pin(SPDA);
1.62
1.63 -#define __lcd_display_pin_init() \
1.64 -do { \
1.65 - __cpm_start_tcu(); \
1.66 - __gpio_as_output(SPEN); \
1.67 - __gpio_as_output(SPCK); \
1.68 - __gpio_as_output(SPDA); \
1.69 -} while (0)
1.70 + __gpio_set_pin(SPCK);
1.71 + value = (value << 1);
1.72 + }
1.73 + __gpio_set_pin(SPEN);
1.74 +}
1.75 +
1.76 +static inline void __lcd_display_pin_init()
1.77 +{
1.78 + __cpm_start_tcu();
1.79 + __gpio_as_output(SPEN);
1.80 + __gpio_as_output(SPCK);
1.81 + __gpio_as_output(SPDA);
1.82 +}
1.83
1.84 -#define __lcd_display_on() \
1.85 -do { \
1.86 - __spi_write_reg1(0x05, 0x1e); \
1.87 - __spi_write_reg1(0x05, 0x5e); \
1.88 - __spi_write_reg1(0x07, 0x8d); \
1.89 - __spi_write_reg1(0x13, 0x01); \
1.90 - __spi_write_reg1(0x05, 0x5f); \
1.91 -} while (0)
1.92 +static inline void __lcd_display_on()
1.93 +{
1.94 + __spi_write_reg1(0x05, 0x1e);
1.95 + __spi_write_reg1(0x05, 0x5e);
1.96 + __spi_write_reg1(0x07, 0x8d);
1.97 + __spi_write_reg1(0x13, 0x01);
1.98 + __spi_write_reg1(0x05, 0x5f);
1.99 +}
1.100
1.101 -#define __lcd_display_off() \
1.102 -do { \
1.103 - __spi_write_reg1(0x05, 0x5e); \
1.104 -} while (0)
1.105 +static inline void __lcd_display_off()
1.106 +{
1.107 + __spi_write_reg1(0x05, 0x5e);
1.108 +}
1.109
1.110 #endif /* __NANONOTE_GPM940B0_H__ */