mtd: bcm47xxsflash: implement ChipCommon R/W ops
They are needed for erasing/writing. Use a magic pointers and small functions to prepare code for adding other buses support in the future (like SSB). Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
Родитель
c095ba7224
Коммит
265dfbd9ae
|
@ -48,6 +48,17 @@ static void bcm47xxsflash_fill_mtd(struct bcm47xxsflash *b47s)
|
||||||
* BCMA
|
* BCMA
|
||||||
**************************************************/
|
**************************************************/
|
||||||
|
|
||||||
|
static int bcm47xxsflash_bcma_cc_read(struct bcm47xxsflash *b47s, u16 offset)
|
||||||
|
{
|
||||||
|
return bcma_cc_read32(b47s->bcma_cc, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bcm47xxsflash_bcma_cc_write(struct bcm47xxsflash *b47s, u16 offset,
|
||||||
|
u32 value)
|
||||||
|
{
|
||||||
|
bcma_cc_write32(b47s->bcma_cc, offset, value);
|
||||||
|
}
|
||||||
|
|
||||||
static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
|
static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct bcma_sflash *sflash = dev_get_platdata(&pdev->dev);
|
struct bcma_sflash *sflash = dev_get_platdata(&pdev->dev);
|
||||||
|
@ -62,6 +73,8 @@ static int bcm47xxsflash_bcma_probe(struct platform_device *pdev)
|
||||||
sflash->priv = b47s;
|
sflash->priv = b47s;
|
||||||
|
|
||||||
b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash);
|
b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash);
|
||||||
|
b47s->cc_read = bcm47xxsflash_bcma_cc_read;
|
||||||
|
b47s->cc_write = bcm47xxsflash_bcma_cc_write;
|
||||||
|
|
||||||
switch (b47s->bcma_cc->capabilities & BCMA_CC_CAP_FLASHT) {
|
switch (b47s->bcma_cc->capabilities & BCMA_CC_CAP_FLASHT) {
|
||||||
case BCMA_CC_FLASHT_STSER:
|
case BCMA_CC_FLASHT_STSER:
|
||||||
|
|
|
@ -60,6 +60,8 @@ enum bcm47xxsflash_type {
|
||||||
|
|
||||||
struct bcm47xxsflash {
|
struct bcm47xxsflash {
|
||||||
struct bcma_drv_cc *bcma_cc;
|
struct bcma_drv_cc *bcma_cc;
|
||||||
|
int (*cc_read)(struct bcm47xxsflash *b47s, u16 offset);
|
||||||
|
void (*cc_write)(struct bcm47xxsflash *b47s, u16 offset, u32 value);
|
||||||
|
|
||||||
enum bcm47xxsflash_type type;
|
enum bcm47xxsflash_type type;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче