mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
gdsys: mpc8308: Use shadow register for output GPIO values
Since the gpio output status on MPC8xxx cannot be read back, it has to be buffered locally. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc> Signed-off-by: Mario Six <mario.six@gdsys.cc>
This commit is contained in:
parent
9c454827f1
commit
b12b545836
4 changed files with 25 additions and 3 deletions
|
@ -287,8 +287,8 @@ void mpc8308_setup_hw(void)
|
|||
/*
|
||||
* set "startup-finished"-gpios
|
||||
*/
|
||||
setbits_be32(&immr->gpio[0].dir, (BIT(31 - 11) | BIT(31 - 12)));
|
||||
setbits_be32(&immr->gpio[0].dat, BIT(31 - 12));
|
||||
setbits_be32(&immr->gpio[0].dir, BIT(31 - 11) | BIT(31 - 12));
|
||||
setbits_gpio0_out(BIT(31 - 12));
|
||||
}
|
||||
|
||||
int mpc8308_get_fpga_done(uint fpga)
|
||||
|
|
|
@ -24,6 +24,25 @@
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/* as gpio output status cannot be read back, we have to buffer it locally */
|
||||
u32 gpio0_out;
|
||||
|
||||
void setbits_gpio0_out(u32 mask)
|
||||
{
|
||||
immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
|
||||
|
||||
gpio0_out |= mask;
|
||||
out_be32(&immr->gpio[0].dat, gpio0_out);
|
||||
}
|
||||
|
||||
void clrbits_gpio0_out(u32 mask)
|
||||
{
|
||||
immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
|
||||
|
||||
gpio0_out &= ~mask;
|
||||
out_be32(&immr->gpio[0].dat, gpio0_out);
|
||||
}
|
||||
|
||||
int get_fpga_state(uint dev)
|
||||
{
|
||||
return gd->arch.fpga_state[dev];
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
#ifndef __MPC8308_H_
|
||||
#define __MPC8308_H_
|
||||
|
||||
void setbits_gpio0_out(u32 mask);
|
||||
void clrbits_gpio0_out(u32 mask);
|
||||
|
||||
/* functions to be provided by board implementation */
|
||||
void mpc8308_init(void);
|
||||
void mpc8308_set_fpga_reset(unsigned state);
|
||||
|
|
|
@ -343,7 +343,7 @@ void mpc8308_setup_hw(void)
|
|||
* set "startup-finished"-gpios
|
||||
*/
|
||||
setbits_be32(&immr->gpio[0].dir, BIT(31 - 11) | BIT(31 - 12));
|
||||
setbits_be32(&immr->gpio[0].dat, BIT(31 - 12));
|
||||
setbits_gpio0_out(BIT(31 - 12));
|
||||
}
|
||||
|
||||
int mpc8308_get_fpga_done(uint fpga)
|
||||
|
|
Loading…
Reference in a new issue