Excuse but I haven't understood.
Thank you
Gabriele
--- In [email protected], John Crispin <[EMAIL PROTECTED]> wrote:
>
> gpiosetbyte();
>
> Quoting gabrielepinca <[EMAIL PROTECTED]>:
>
> > Dear John,
> > the solution you gave in the previous post, gives an intermediate
> > wrong output value. This cause errors if we dont'have an enable bit.
> > For example for program an RF parrallel attenuator...
> >
http://www.hittite.com/product_info/product_specs/attenuators/hmc472lp4.pdf
> > I think that the following code can solve the problem in the correct
> > way, but i dont know how to add this as driver.
> > I have no idea on how to compile the "gpio_syscalls.c" and make the
> > function work.
> > Any help? how can i call this function?
> > Thanks
> > Gabriele
> >
> > asmlinkage void sys_gpiosetbyte(unsigned char port, unsigned int bits,
> > int value){
> > switch(port){
> > case 'G':
> > case 'g':
> > if((bits & 0x0000FF00)==0x0000FF00){
> > port_g_data_shadow &= ~bits;
> > value = (value << 8);
> > *R_PORT_G_DATA = port_g_data_shadow |= value;
> > };
> > if((bits & 0x00FF0000)==0x00FF0000){
> > port_g_data_shadow &= ~bits;
> > value = (value << 16);
> > *R_PORT_G_DATA = port_g_data_shadow |= value;
> > };
> > break;
> >
> > case 'A':
> > case 'a':
> >
> > case 'B':
> > case 'b':
> > break;
> > }
> > }
> >
> >
> >
> > --- In [email protected], John Crispin <john@> wrote:
> >>
> >> gpiosetbits(PORTG, (value << 8) & 0xff00);
> >> gpioclearbits(PORTG, (~value << 8) & 0xff00);
> >>
> >> should do the job then
> >>
> >>
> >>
> >> Quoting f_lamme <f_lamme@>:
> >>
> >> > But this way I move all the 32 bits.
> >> > I need to move only these 8
> >> > PG8-PG15
> >> >
> >> > --- In [email protected], John Crispin <john@> wrote:
> >> >>
> >> >> hi
> >> >>
> >> >> gpiosetbits(PORTG, (value << 8) & 0xffffff00);
> >> >> gpioclearbits(PORTG, (~value << 8) & 0xffffff00);
> >> >>
> >> >>
> >> >> although the & 0xffffff00 bit is not really needed, it is just for
> >> > sanity
> >> >>
> >> >> john
> >> >>
> >> >> > if (value&0x01)
> >> >> > gpiosetbits(PORTG, PG8);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG8);
> >> >> > if (value&0x02)
> >> >> > gpiosetbits(PORTG, PG9);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG9);
> >> >> > if (value&0x04)
> >> >> > gpiosetbits(PORTG, PG10);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG10);
> >> >> > if (value&0x08)
> >> >> > gpiosetbits(PORTG, PG11);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG11);
> >> >> > if (value&0x10)
> >> >> > gpiosetbits(PORTG, PG12);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG12);
> >> >> > if (value&0x20)
> >> >> > gpiosetbits(PORTG, PG13);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG13);
> >> >> > if (value&0x40)
> >> >> > gpiosetbits(PORTG, PG14);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG14);
> >> >> > if (value&0x80)
> >> >> > gpiosetbits(PORTG, PG15);
> >> >> > else
> >> >> > gpioclearbits(PORTG, PG15);
> >> >> > // cs e clk
> >> >> > gpioclearbits(PORTG, PG1);
> >> >> > gpiosetbits(PORTG, PG3);
> >> >> > gpioclearbits(PORTG, PG3);
> >> >> > if (clk==1)
> >> >> > {
> >> >> > gpiosetbits(PORTG, PG3);
> >> >> > gpioclearbits(PORTG, PG3);
> >> >> > }
> >> >> > gpiosetbits(PORTG, PG1);
> >> >> >
> >> >> > }
> >> >> > the problem and the slowness with which the byte is sent
> > because the
> >> >> > byte is sent bit per bit.
> >> >> > Does a way exist to send a whole byte?
> >> >> > I excuse but I do not speak English very well
> >> >> >
> >> >> >
> >> >>
> >> >
> >> >
> >> >
> >>
> >
> >
> >
>